Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ jobs:
- name: Validate skill catalog
run: dotnet run --file src/checkskills.cs -- ./docs/SkillCatalog.xml ./docs/SkillCatalog.xsd

- name: Run skill catalog schema regression checks
run: dotnet run --file src/testskills.cs -- ./docs/SkillCatalog.xsd

# Run Catalog Builder tool
- name: Run Catalog Builder Tool
run: dotnet run --file src/catalogutil.cs -- ./docs/ ./outputs/
Expand Down
8 changes: 8 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ dotnet run --file src/catalogutil.cs -- ./docs/ ./outputs/

대상 서비스의 이용 자체에 로그인이 필요한 것은 무방하지만, 설치 파일을 내려받기 위해 로그인이 필요한 항목은 수록하지 않습니다.

## 환경 변수로 자격 증명을 받는 신규 스킬의 접수 보류

사용자 API 키, 토큰이나 클라이언트 시크릿을 환경 변수로 전달받는 신규 스킬의 등록 접수를 현재 보류합니다. 환경 변수의 비밀값은 평문 노출과 자식 프로세스 상속의 위험이 있으며 식탁보의 스킬별 자격 증명 저장 및 전달 기능은 아직 구현하지 않았습니다. [TableCloth #321](https://github.com/yourtablecloth/TableCloth/issues/321)의 대응 기능 개발과 검증을 마친 뒤 접수를 재개합니다.

사용자 키 없이 독립적으로 동작하는 기능을 제안하는 경우에는 지원 명령, 출력 범위와 추가 의존성을 명시하고 사용자 키를 사용하는 경로와 구분합니다. 기존 카탈로그 항목에 키 없는 독립 기능이 있더라도 신규 자격 증명 전달 경로는 계속 접수를 보류합니다. 시스템 또는 사용자 환경 변수, `.env` 파일이나 채팅 프롬프트로 키를 입력하게 하는 우회 사용법은 안내하지 않습니다. 코드, 카탈로그, 문서와 PR에는 실제 키, 토큰이나 클라이언트 시크릿을 포함하지 않으며 예시는 비밀값이 아닌 자리표시자를 사용합니다.

스킬의 등록, 제거와 실행 조건은 [원격 스킬 카탈로그 안내](docs/SkillCatalog.README.ko.md)와 [영문 안내](docs/SkillCatalog.README.md)에서 설명합니다.

## 출처 메타데이터 기재 (권장)

새로운 항목을 제출하실 때에는 그 값을 무엇을 근거로 언제 확인하셨는지 함께 남겨주시기를 권장합니다. 아래 속성은 모두 선택 사항이며, 비워두셔도 검증은 통과합니다.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

- [docs/Catalog.xml](docs/Catalog.xml): 각 기관, 서비스 웹 사이트마다 필요로 하는 추가 소프트웨어들의 목록을 저장하고 관리하는 XML 파일입니다.
- XML 파일 편집은 [Microsoft XML Notepad](https://microsoft.github.io/XmlNotepad/)를 사용하시는 것을 권장합니다.
- [docs/SkillCatalog.xml](docs/SkillCatalog.xml): 원격 스킬과 MCP 연동 후보, 고정 원본 및 검토 상태를 관리합니다. 형식과 설치 승인 조건은 [원격 스킬 카탈로그 안내](docs/SkillCatalog.README.ko.md)를 참고하실 수 있습니다.
- [docs/SkillCatalog.xml](docs/SkillCatalog.xml): 설치할 수 있는 원격 스킬과 고정 원본을 관리합니다. 항목 추가, 주석을 통한 제거 및 버전 갱신 방식은 [원격 스킬 카탈로그 안내](docs/SkillCatalog.README.ko.md)를 참고하실 수 있습니다.
- [docs/sites.xml](docs/sites.xml): Internet Explorer Mode로 띄우려는 웹 사이트들의 목록을 저장하고 관리하는 XML 파일입니다. (식탁보 0.5.5 버전부터 사용)
- XML 파일 편집은 [Microsoft XML Notepad](https://microsoft.github.io/XmlNotepad/)를 사용하시는 것을 권장합니다.
- Microsoft Edge 그룹 정책에서 <https://yourtablecloth.app/TableClothCatalog/sites.xml> 주소를 직접 지정하여 설정을 적용할 수 있습니다.
Expand Down
50 changes: 27 additions & 23 deletions docs/SkillCatalog.README.ko.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,51 @@
# 원격 스킬 카탈로그 후보
# 원격 스킬 카탈로그의 추가와 갱신

[English](SkillCatalog.README.md)

2026년 10월 25일 기준으로 [SkillCatalog.xml](SkillCatalog.xml)에 커뮤니티 스킬과 MCP 연동 후보 12개를 등록했습니다. 모든 항목의 라이선스 검토와 설치 검토는 `pending`을 유지합니다.
2026년 10월 25일 기준으로 [SkillCatalog.xml](SkillCatalog.xml)은 스킬 5개를 활성 항목으로 제공합니다. 초기 목록에서 보류한 후보 5개와 `SKILL.md`가 없는 MCP 후보 2개는 XML 주석으로 보존합니다.

이 문서는 배포 위치, 원본 고정 방식, 검토 상태와 검증 범위를 다룹니다. 항목을 등록해도 식탁보가 설치나 MCP 서버 설정을 수행하지 않습니다.
이 문서는 항목 추가와 제거, 고정 버전 갱신, 실행 선행 조건, 라이선스 및 게시 전 검증을 다룹니다. 활성 `Skill` 요소는 별도 검토 상태 없이 설치 대상으로 표시합니다.

카탈로그의 배포 경로부터 설명하고 검토 상태와 원본 확인 근거를 정리하겠습니다. 마지막으로 설치 승인 전 검증 범위를 짚겠습니다.
항목 편집 방식부터 정리하겠습니다. 이후 버전과 실행 조건을 구분하고 검증 및 배포 절차를 설명하겠습니다.

## 기존 Pages 배포 경로
## 활성 요소와 주석을 통한 항목 관리

카탈로그 배포 경로를 살펴보겠습니다. [publish.yml](../.github/workflows/publish.yml)은 카탈로그 빌더가 복사한 `docs` 전체를 GitHub Pages에 게시합니다. 이 절차를 거친 XML은 `https://catalog.yourtablecloth.app/SkillCatalog.xml`에서 제공합니다. 식탁보는 저장소 체크아웃 없이 XML을 읽습니다.
활성 항목의 등록 방식을 살펴보겠습니다. `Skill` 요소에 고유 ID, 실제 스킬 디렉터리, 전체 커밋 SHA와 같은 저장소 및 커밋의 라이선스 URL을 기록합니다. `Install.Mode`는 `upstream`을 사용하며 목록 상태와 검토 상태 속성은 기록하지 않습니다.

## 커밋 고정과 외부 패키지 의존성
이어서 항목 제거 방식을 짚겠습니다. 해당 `Skill` 요소 전체를 XML 주석으로 감싸고 제거 사유를 짧게 남깁니다. 요소 본문에 연속된 하이픈 두 개가 있으면 `&#45;&#45;`로 표기해 블록을 유효한 XML 주석으로 감쌀 수 있습니다. XML 파서는 원래 문자를 읽으며 주석을 설치 목록에 포함하지 않습니다. 원격 목록에서 항목을 제거해도 사용자는 기존 로컬 설치를 계속 관리하거나 제거할 수 있습니다. [현재 XML](SkillCatalog.xml)은 순수 MCP 후보 2개의 블록을 이 방식으로 보존합니다.

원본 고정 범위를 검토하겠습니다. 각 `Source`는 공개 GitHub 저장소, 상대 디렉터리와 전체 커밋 SHA를 기록합니다. `Path="."`는 스킬 디렉터리가 없는 MCP 후보의 저장소 루트를 가리킵니다.
## 환경 변수로 자격 증명을 받는 신규 스킬의 접수 보류

디렉터리 이름 내부의 점은 `skills/example.v1`처럼 사용할 수 있지만 각 이름의 끝에는 점을 붙일 수 없습니다. 루트 표시 `.`는 계속 허용합니다. 이 규칙으로 마켓플레이스 클라이언트가 거부하는 경로의 게시를 방지합니다.
사용자 API 키, 토큰이나 클라이언트 시크릿을 환경 변수로 전달받는 신규 스킬의 등록 접수를 현재 보류합니다. 환경 변수의 비밀값은 평문 노출과 자식 프로세스 상속의 위험이 있으며 식탁보의 스킬별 자격 증명 저장 및 전달 기능은 아직 구현하지 않았습니다. [TableCloth #321](https://github.com/yourtablecloth/TableCloth/issues/321)의 대응 기능 개발과 검증을 마친 뒤 접수를 재개합니다. [기여 정책](../CONTRIBUTING.md)에도 같은 기준을 적용합니다.

다만 Git 커밋을 고정해도 원본 지침이 실행 중 내려받는 패키지까지 고정하지는 않습니다. NomaDamas 후보는 현재 `npx` CLI로 지침을 읽습니다. 패키지 버전과 실행 환경 검토는 계속 `pending`으로 남깁니다.
사용자 키 없이 독립적으로 동작하는 기능을 제안하는 경우에는 지원 명령, 출력 범위와 추가 의존성을 명시하고 사용자 키를 사용하는 경로와 구분합니다. 기존 카탈로그 항목에 키 없는 독립 기능이 있더라도 신규 자격 증명 전달 경로는 계속 접수를 보류합니다. 시스템 또는 사용자 환경 변수, `.env` 파일이나 채팅 프롬프트로 키를 입력하게 하는 우회 사용법은 안내하지 않습니다. 코드, 카탈로그, 문서와 PR에는 실제 키, 토큰이나 클라이언트 시크릿을 포함하지 않으며 예시는 비밀값이 아닌 자리표시자를 사용합니다.

## 목록 노출과 설치 승인 조건
## 고정 커밋을 기준으로 한 업데이트

검토 상태의 역할을 확인하겠습니다. `Status`는 `listed`와 `unlisted`를 허용합니다. `License.ReviewStatus`는 `pending`, `verified`, `rejected`를 허용합니다. `Install.ReviewStatus`는 `pending`, `approved`, `rejected`를 허용합니다.
같은 스킬을 갱신할 때는 `Id`, `Source.Repository`와 `Source.Path`를 유지합니다. `Source.Ref`를 새 전체 커밋 SHA로 바꾸고 `License.Source`도 같은 커밋으로 갱신합니다. 식탁보는 설치한 원본 커밋과 카탈로그 커밋을 비교해 업데이트를 제공합니다.

이어서 설치 조건을 구체적으로 적겠습니다. 식탁보는 목록 상태 `listed`, 라이선스 검토 `verified`, 설치 검토 `approved`, 설치 방식 `upstream`, 런타임 `Codex`와 고정 커밋을 모두 충족하는 항목의 설치를 허용합니다. 라이선스 근거도 같은 저장소와 커밋으로 고정하며 설치 관리자가 해당 파일을 `LICENSE.upstream`으로 보존합니다. `adapter` 항목은 연동 개발 후보로 표시하며 MCP 서버를 설치하거나 설정하지 않습니다.
다만 원본 지침이 실행 중 내려받는 패키지는 자체 버전 동작을 따릅니다. [NomaDamas 원본](https://github.com/NomaDamas/k-skill/tree/0102e5133865f00886e37ac8cf39a49e2c7a3d39)의 스킬은 현재 `npx` CLI로 지침을 읽으므로 Git 커밋 고정만으로 해당 CLI의 배포 버전까지 고정하지는 않습니다.

## 고정 원본의 라이선스 확인 근거
## 스킬 파일 설치와 실행 선행 조건

원본 LICENSE에서 [NomaDamas MIT](https://github.com/NomaDamas/k-skill/blob/0102e5133865f00886e37ac8cf39a49e2c7a3d39/LICENSE), [jjlabsio ISC](https://github.com/jjlabsio/korea-stock-mcp/blob/210595eec73a39cd04e2fb175f6e69b1516f0dd4/LICENSE), [kimlawtech Apache-2.0](https://github.com/kimlawtech/korean-jangbu-for/blob/592f6d7c7be138ae578be9ed6769239cc527ddea/LICENSE), [chrisryugj MIT](https://github.com/chrisryugj/korean-law-mcp/blob/4ccedb0dc89fce164493ffc9019b5ad35cb9b782/LICENSE), [mouseco MIT](https://github.com/mouseco/k-gov-skills/blob/a55816b9b44e8391576204a095bf6337940d80f3/LICENSE)와 [tae0y MIT](https://github.com/tae0y/real-estate-mcp/blob/1119eb1069d1b1bae15f7b38c6c0268fe07995c0/LICENSE)를 확인했습니다.
설치 관리자는 스킬 파일을 복사하고 같은 커밋의 라이선스를 `LICENSE.upstream`으로 보존합니다. 런타임, MCP 서버 등록과 API 키는 별도로 설정합니다. `Network`는 스킬 실행 시 네트워크 의존성을 나타내며 원격 설치에는 항상 다운로드를 사용합니다.

또한 mouseco의 [출처 기록](https://github.com/mouseco/k-gov-skills/blob/a55816b9b44e8391576204a095bf6337940d80f3/docs/attribution.md)은 이번 후보 4개를 직접 작성한 스킬로 구분합니다. API 응답 데이터와 참조 도구에는 각 원 출처의 조건을 적용합니다. LICENSE 확인만으로 재배포, 보안 또는 호환성 검토를 완료하지 않습니다.
[법령 스킬](https://github.com/chrisryugj/korean-law-mcp/blob/4ccedb0dc89fce164493ffc9019b5ad35cb9b782/skills/korean-law/SKILL.md)은 파일 설치 후 별도 `korean-law` MCP 서버와 법제처 API 인증키를 사용합니다. [장부 스킬](https://github.com/kimlawtech/korean-jangbu-for/blob/592f6d7c7be138ae578be9ed6769239cc527ddea/skills/korean-jangbu-for/SKILL.md)도 진입점 외에 MCP 서버와 하위 스킬을 사용합니다. 각 항목의 `Notes`에서 실행 조건을 확인할 수 있습니다.

## 스키마 검사와 실행 검증 범위
## 원본 라이선스와 데이터 이용 조건

[SkillCatalog.xsd](SkillCatalog.xsd)는 메타데이터, 검토 상태와 ID 중복을 검사합니다. 저장소 루트에서 `dotnet run --file src/checkskills.cs -- docs/SkillCatalog.xml docs/SkillCatalog.xsd`로 실행할 수 있습니다. Pages 워크플로도 게시 전에 같은 검사를 실행합니다. 설치 검토에서는 전체 파일과 라이선스 고지, 보조 스크립트 경로, 패키지 버전, 식탁보 전용 Codex 환경 호환성, API 키와 문서 접근 범위를 함께 다룹니다.
활성 항목은 [NomaDamas MIT](https://github.com/NomaDamas/k-skill/blob/0102e5133865f00886e37ac8cf39a49e2c7a3d39/LICENSE), [kimlawtech Apache-2.0](https://github.com/kimlawtech/korean-jangbu-for/blob/592f6d7c7be138ae578be9ed6769239cc527ddea/LICENSE), [chrisryugj MIT](https://github.com/chrisryugj/korean-law-mcp/blob/4ccedb0dc89fce164493ffc9019b5ad35cb9b782/LICENSE)와 [mouseco MIT](https://github.com/mouseco/k-gov-skills/blob/a55816b9b44e8391576204a095bf6337940d80f3/LICENSE)를 원본 고정 커밋에서 참조합니다.

경로 회귀 검사는 `dotnet run --file src/testskills.cs -- docs/SkillCatalog.xsd`로 실행할 수 있습니다. [PR 워크플로](../.github/workflows/skill-catalog.yml)가 실제 스키마를 대상으로 카탈로그 검증과 회귀 검사를 함께 실행합니다.
또한 mouseco의 [출처 기록](https://github.com/mouseco/k-gov-skills/blob/a55816b9b44e8391576204a095bf6337940d80f3/docs/attribution.md)은 후보 4개를 직접 작성한 스킬로 구분합니다. API 응답 데이터와 참조 도구에는 각 원 출처의 조건을 적용합니다. 카탈로그는 자격증명을 저장하거나 원본 코드를 실행하지 않습니다.

카탈로그는 자격증명을 저장하거나 원본 코드를 실행하지 않습니다. `Network`는 스킬 실행 시 네트워크 의존성을 표시합니다. 원격 스킬 다운로드에는 별도로 네트워크를 사용합니다. Windows Sandbox 내부 스킬 실행은 별도 구현과 검증을 전제로 합니다.
## 스키마 검사와 기존 Pages 배포

## 후보 등록 이후의 검토 범위
[SkillCatalog.xsd](SkillCatalog.xsd)는 고정 커밋과 라이선스 URL을 필수로 요구하고 활성 항목을 최대 256개로 제한합니다. [checkskills.cs](../src/checkskills.cs)는 XML 크기를 512 KiB로 제한하며 라이선스 URL의 저장소 및 커밋 일치와 경로를 검사합니다. 디렉터리 이름 내부의 점은 허용하지만 끝점은 거부합니다. 루트 표시 `.`는 계속 허용합니다.

여기까지 정리하면 카탈로그는 원본과 채택 조건을 고정해 검토 후보를 제공합니다. 현재 12개 후보 중 설치 승인을 마친 항목은 없습니다.
저장소 루트에서 `dotnet run --file src/checkskills.cs -- docs/SkillCatalog.xml docs/SkillCatalog.xsd`와 `dotnet run --file src/testskills.cs -- docs/SkillCatalog.xsd`를 실행할 수 있습니다. [PR 워크플로](../.github/workflows/skill-catalog.yml)와 [Pages 워크플로](../.github/workflows/publish.yml)가 두 검사를 함께 실행합니다. 기존 카탈로그 빌더는 `docs`를 복사해 `https://catalog.yourtablecloth.app/SkillCatalog.xml`에 게시합니다.

우선 각 후보의 라이선스 고지와 실행 환경을 검증할 수 있습니다. MCP 어댑터 구현, 민감정보 통제와 외부 패키지 고정은 후속 개발 범위로 남깁니다. 검토 상태와 `Notes`를 함께 읽으면 각 후보의 진행 범위를 판단할 수 있습니다.
## 카탈로그와 로컬 설치의 수명 주기

여기까지 정리하면 활성 XML 요소가 설치 목록을 구성하고 고정 커밋의 변경이 업데이트를 구분합니다. XML 주석은 원본 기록을 남기면서 항목을 목록에서 제거합니다.

원격 항목 편집은 앞으로 제공할 설치와 업데이트에 영향을 줍니다. 사용자는 기존 로컬 설치를 계속 관리할 수 있습니다. MCP 서버와 API 키 같은 실행 조건은 각 스킬의 `Notes`와 원본 문서에 따라 설정할 수 있습니다.
Loading
Loading