Skip to content

스킬 마켓플레이스와 AppContainer 평가 도구 통합 - #320

Merged
rkttu merged 19 commits into
developfrom
feature/skill-marketplace
Oct 25, 2026
Merged

rkttu merged 19 commits into
developfrom
feature/skill-marketplace

Conversation

@rkttu

@rkttu rkttu commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

식탁보 AI에서 원격 스킬 탐색과 설치된 스킬 관리를 하나의 마켓플레이스 창으로 제공합니다. 옵션과 AI 설정 팝업은 같은 창으로 연결하고 첫 메시지에는 안내 카드 세 개와 스킬 탐색 링크를 표시합니다. 스킬을 기본 설치하지 않으며 기존 설치본은 계속 관리할 수 있습니다.

클라이언트는 XML 카탈로그의 고정 원본과 라이선스를 GitHub API로 검증해 설치합니다. 출처 및 버전 기록, 업데이트, 활성화 전환과 제거를 지원하며 원격 목록에서 내리거나 카탈로그 조회가 실패해도 로컬 설치본을 관리할 수 있습니다. 등재 및 검토 상태로 설치 버튼을 제한하지 않습니다.

제품의 shell_tool=false, unified_exec=false, 읽기 전용 샌드박스와 never 승인 정책을 유지합니다. 사용하지 않는 전용 Python 및 Node.js 설치, 환경 주입, 진단과 UI를 제거했습니다. AppContainer 격리 실행기와 고정 스크립트 MCP 중계기는 tools 아래의 독립 평가 도구로 통합하며 제품 채팅에 연결하지 않습니다. 스킬 사용을 확정하지 못하던 응답별 기록 표시도 제거한 상태를 유지합니다.

카탈로그 서브모듈은 TableClothCatalog #150의 main 30a8ad90c3557db849ba866c9d3905e5645d286b를 참조합니다. 활성 6개 중 고정 스크립트 3개는 공개 평가 후보로 유지합니다. API 키 설정과 DPAPI 자격 증명 보호 및 전달은 #321에서 추적합니다. 영한 안내에서 제품 지원 범위와 PoC 실측 범위를 구분했습니다.

#323과 #322를 merge commit으로 연결하여 지정한 세 브랜치의 원본 이력을 보존했습니다. 최종 HEAD d630849480a91bab6e4621abe4710abd18156d85의 소스 트리 590e5602c31a79df45dc0d63b355d96b116e0b99는 원격 CI Build602를 통과한 415a5cc5와 동일합니다. develop은 현재 HEAD의 조상이므로 통합 시 새 코드 충돌이 없습니다.

검증:

  • Build602의 Debug/Release x64/ARM64 네 구성 모두 테스트와 Native AOT 빌드 및 패키징 성공
  • 각 구성 Spork 43개, 앱 322개, Managed AI 197개 테스트 통과
  • 최종 카탈로그 참조에서 로컬 Managed AI 197/197 통과
  • PoC 검사기 46/46, 원본 계산기 28개 및 BOK 19개 검사 통과 기록 보존
  • 실제 Codex 0.156.1에서 결정적 로컬 응답을 통한 MCP 및 AppContainer 연결 확인
  • 문서 로컬 링크 36개와 공백 검사 통과

병합 후 최종 develop HEAD의 전체 CI를 별도로 확인합니다. PoC의 Windows 10 22H2, ARM64 실측과 실제 모델의 도구 선택은 후속 범위입니다. 이번 통합에서 버전, 태그와 공개 릴리스를 변경하지 않습니다.

병합 후 검증 완료: 최종 develop 2bc0e3dd623e5b3bc4d602c5882a91bc97af3ac3의 원격 CI Build604가 성공했습니다. Debug/Release x64/ARM64 네 구성의 전체 테스트, 식탁보 Native AOT와 패키징, Release의 Spork 및 Bootstrapper 작업과 업로드를 확인했습니다. Release ARM64 로그에서도 Spork 43개, 앱 322개, Managed AI 197개 테스트를 확인했습니다. 지정한 세 브랜치의 원본 및 최종 HEAD가 모두 develop의 조상이며 PR #323, #322, #320 모두 병합 상태입니다. 두 저장소의 열린 PR은 없고 로컬 develop과 origin/develop, 카탈로그 고정 커밋 및 main이 일치합니다. 루트와 서브모듈 작업 트리도 깨끗합니다.

@rkttu rkttu changed the title 원격 스킬 마켓플레이스와 전용 스킬 관리 창 추가 원격 스킬 마켓플레이스와 설치 버전 관리 Oct 24, 2026
@rkttu rkttu changed the title 원격 스킬 마켓플레이스와 설치 버전 관리 원격 스킬 마켓플레이스와 전용 실행 환경 관리 Oct 25, 2026
@rkttu rkttu changed the title 원격 스킬 마켓플레이스와 전용 실행 환경 관리 원격 스킬 마켓플레이스와 설치된 스킬 관리 Oct 25, 2026
rkttu added 2 commits October 25, 2026 22:09
스킬 지침 참조 여부를 확정하지 못하는 응답 기록 표시와 전용 수집 코드, 테스트 및 문서를 제거합니다. c636ff9cb6bebc9146908e6ec69ecff3f9e6e8a8을 되돌립니다.
@rkttu rkttu changed the title 원격 스킬 마켓플레이스와 설치된 스킬 관리 스킬 마켓플레이스와 AppContainer 평가 도구 통합 Oct 25, 2026
@rkttu
rkttu marked this pull request as ready for review October 25, 2026 13:53
Copilot AI balanced review requested due to automatic review settings October 25, 2026 13:53
@rkttu
rkttu merged commit 2bc0e3d into develop Oct 25, 2026
5 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Remote installation and native process-isolation boundaries need final human review beyond the recorded CI and PoC evidence.

2 open issues
What changed in this PR

This PR consolidates remote skill discovery and installed-skill management into TableCloth’s marketplace and adds standalone AppContainer evaluation tools without enabling script execution in product chat.

Changes:

  • Adds catalog validation, pinned-source installation, revision tracking, and marketplace controls.
  • Removes bundled skill resources and updates guidance for optional installation.
  • Adds isolated execution probes, pinned evaluation fixtures, and bilingual documentation distinguishing measured results from product support.
File Description
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​SKILL.md Preserves upstream calculator instructions.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​README.md Preserves English calculator guidance.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​README.ko.md Preserves Korean calculator guidance.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​LICENSE-COMMERCIAL Retains upstream commercial-license notice.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​docs/​COPYRIGHT.md Records independent-implementation boundaries.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​docs/​COPYRIGHT.ko.md Provides Korean copyright guidance.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​CONTRIBUTING.md Preserves contribution requirements.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​CONTRIBUTING.ko.md Preserves Korean contribution requirements.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​.gitignore Excludes local Python artifacts.
tools/​appcontainer-skill-poc/​skills/​tablecloth-calculators/​.github/​workflows/​test.yml Preserves upstream test workflow.
tools/​appcontainer-skill-poc/​skills/​README.md Explains fixture provenance and execution boundaries.
tools/​appcontainer-skill-poc/​skills/​README.ko.md Provides Korean fixture guidance.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​tests/​fixtures/​search_response.json Adds sample search results.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​tests/​fixtures/​meta_response.json Adds sample table metadata.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​tests/​fixtures/​data_response.json Adds sample statistical rows.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​tests/​__init__.py Preserves test package marker.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​SKILL.md Preserves upstream KOSIS instructions.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​skill.json Retains KOSIS skill metadata.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​references/​kosis-openapi-guide.md Preserves API reference material.
tools/​appcontainer-skill-poc/​skills/​kosis-stats/​LICENSE Retains upstream MIT license.
tools/​appcontainer-skill-poc/​skills/​bok-ecos-stats/​tests/​test_bok_ecos.py Adds upstream helper tests.
tools/​appcontainer-skill-poc/​skills/​bok-ecos-stats/​SKILL.md Preserves upstream BOK instructions.
tools/​appcontainer-skill-poc/​skills/​bok-ecos-stats/​skill.json Retains BOK skill metadata.
tools/​appcontainer-skill-poc/​skills/​bok-ecos-stats/​LICENSE Retains upstream MIT license.
tools/​appcontainer-skill-poc/​skills/​bok-ecos-stats/​instruction.md Preserves BOK command contracts.
tools/​appcontainer-skill-poc/​RESULTS.md Records evaluation results and limitations.
tools/​appcontainer-skill-poc/​RESULTS.ko.md Provides Korean evaluation results.
tools/​appcontainer-skill-poc/​README.md Documents standalone execution and reproduction.
tools/​appcontainer-skill-poc/​README.ko.md Provides Korean PoC guidance.
tools/​appcontainer-skill-poc/​Program.cs Dispatches evaluation and recovery commands.
tools/​appcontainer-skill-poc/​Probes/​wait.py Exercises timeout handling.
tools/​appcontainer-skill-poc/​Probes/​unicode.py Exercises Unicode input and output.
tools/​appcontainer-skill-poc/​Probes/​output.py Exercises output limits.
tools/​appcontainer-skill-poc/​Probes/​node-json.cjs Adds fixed Node addition fixture.
tools/​appcontainer-skill-poc/​Probes/​memory.py Exercises memory limits.
tools/​appcontainer-skill-poc/​Probes/​isolation.py Probes Python isolation controls.
tools/​appcontainer-skill-poc/​Probes/​isolation.cjs Probes Node isolation controls.
tools/​appcontainer-skill-poc/​Preparation.cs Stages pinned runtimes and registrations.
tools/​appcontainer-skill-poc/​Poc.csproj Defines standalone Windows evaluation project.
tools/​appcontainer-skill-poc/​Native/​Win32.cs Declares native isolation APIs.
tools/​appcontainer-skill-poc/​Native/​SandboxRunContracts.cs Defines execution limits and results.
tools/​appcontainer-skill-poc/​Native/​OwnedPaths.cs Validates owned paths and manages cleanup.
tools/​appcontainer-skill-poc/​evaluation-summary.json Stores sanitized evaluation evidence.
tools/​appcontainer-skill-poc/​Broker/​SkillExecutionRegistry.cs Validates and executes registered scripts.
tools/​appcontainer-skill-poc/​Broker/​README.md Documents broker contracts and limits.
tools/​appcontainer-skill-poc/​.gitattributes Preserves fixture bytes across checkouts.
src/​TableCloth.Test/​OptionsSkillTests.cs Tests marketplace entry and loading behavior.
src/​TableCloth.ManagedAi.Test/​TableCloth.ManagedAi.Test.csproj Includes catalog fixture in test output.
src/​TableCloth.ManagedAi.Test/​ProviderTests.cs Checks former runtime files remain inactive.
src/​TableCloth.ManagedAi.Poc/​Program.cs Names diagnostic paths before registration.
src/​TableCloth.ManagedAi.OpenAi/​TableCloth.ManagedAi.OpenAi.csproj Removes bundled skill resources.
src/​TableCloth.ManagedAi.OpenAi/​Skills/​SkillDirectoryCleanup.cs Adds best-effort staging cleanup.
src/​TableCloth.ManagedAi.OpenAi/​Skills/​SkillCatalogClient.cs Fetches and validates bounded XML catalogs.
src/​TableCloth.ManagedAi.OpenAi/​Skills/​GithubSkillInstaller.cs Installs and updates pinned skill sources.
src/​TableCloth.ManagedAi.OpenAi/​Skills/​Bundled/​tablecloth-windows-sandbox/​SKILL.md Removes bundled Sandbox instructions.
src/​TableCloth.ManagedAi.OpenAi/​Skills/​Bundled/​tablecloth-certificate-expiry/​SKILL.md Removes bundled certificate instructions.
src/​TableCloth.ManagedAi.OpenAi/​ServiceCollectionExtensions.cs Registers marketplace services and HTTP client.
src/​TableCloth.ManagedAi.Core/​SkillCatalog.cs Defines catalog and provenance contracts.
src/​TableCloth.ManagedAi.Core/​Contracts.cs Adds skill validity and source metadata.
src/​TableCloth.App/​ViewModels/​SkillSettingsItem.cs Presents installed state and revision details.
src/​TableCloth.App/​ViewModels/​OptionsWindowViewModel.Skills.cs Replaces inline management with marketplace creation.
src/​TableCloth.App/​ViewModels/​OptionsWindowViewModel.cs Integrates marketplace dependency and removes eager loading.
src/​TableCloth.App/​ManagedAi/​ManagedAiText.cs Adds localized marketplace text.
src/​TableCloth.App/​Dialogs/​SkillMarketplaceWindow.axaml.cs Handles marketplace lifecycle and folder selection.
src/​TableCloth.App/​Dialogs/​SkillMarketplaceWindow.axaml Adds catalog and installed-skill tabs.
src/​TableCloth.App/​Dialogs/​OptionsWindow.axaml.cs Opens the marketplace dialog.
src/​TableCloth.App/​Dialogs/​OptionsWindow.axaml Replaces inline controls with marketplace guidance.
README.md Updates optional-skill guidance and documentation links.
docs/​SKILL_MARKETPLACE.md Documents marketplace behavior and support boundaries.
docs/​SKILL_MARKETPLACE.ko.md Provides Korean marketplace documentation.
docs/​RELEASING.md Updates manual skill-installation verification.
docs/​poc/​managed-ai-runtime.md Replaces bundled-skill descriptions with optional installation.

Review effort: Balanced

{
timeout.Token.ThrowIfCancellationRequested();
var repositoryPath = entry.SourcePath == "." ? file.Path : entry.SourcePath + "/" + file.Path;
var content = await GetContentAsync(api, repositoryPath, entry.SourceRef, file, budget, timeout.Token);
process.stdin.on('end', () => {
const value = JSON.parse(text);
if (!Number.isFinite(value.a) || !Number.isFinite(value.b)) process.exit(2);
process.stdout.write(JSON.stringify({ok: true, sum: value.a + value.b, runtime: process.version}));
@rkttu
rkttu deleted the feature/skill-marketplace branch October 25, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants