자주 묻는 질문
버그와 기능 제안은 GitHub Issues가 가장 빠릅니다. 아래는 자주 막히는 지점입니다.
설정 파일을 만들어야 하나요?
아니요. pubspec.yaml, src-tauri/tauri.conf.json,
build.gradle, package.json, *.xcodeproj,
project.godot 같은 파일이 있는지만 보고 11개 타입 중 하나로 분류합니다.
프로젝트 사이 빌드 순서를 직접 선언하고 싶을 때만
ubs.dependencies.json을 추가합니다.
빌드하기 전에 무엇이 실행될지 볼 수 있나요?
./build.sh plan은 읽기 전용으로 각 프로젝트에 실제 실행될 명령을
보여주고, ./build.sh --dry-run은 어떤 빌드가 돌지만 확인합니다.
detect --json · audit --json · graph --json은
부작용 없이 구조화된 결과만 출력합니다.
모노레포에서 빌드 순서를 정할 수 있나요?
Node 워크스페이스 멤버십과 package.json 이름·의존성에서 순서를 먼저
추론합니다. 그것으로 부족하면 ubs.dependencies.json으로 간선을 직접
선언합니다. 참조한 경로가 실제로 선택된 프로젝트가 아니거나 순환이 있으면 빌드가
시작되기 전에 거부됩니다. 충돌하는 워크스페이스 프로젝트는 병렬로 묶지 않고
직렬로 돕니다.
CI에서 쓰려면 무엇을 넘겨야 하나요?
UBS_NON_INTERACTIVE=true로 질문 없이 돌고, --version-bump로
버전 정책을, --jobs로 병렬 수를 고정합니다.
--report-json <file>은 계획이 아닌 실제 빌드 결과를 파일로 남기고,
--fail-fast는 첫 실패에서 멈춥니다(기본값은 독립 프로젝트를 계속 진행).
자체 업데이트가 내 파일을 망가뜨릴 수 있나요?
업데이트는 매니페스트의 ECDSA-P256 서명을 로컬 공개키로 검증하고, 파일별 해시를
확인해 스테이징한 뒤, 현재 파일을 백업하고 하나씩 원자적으로 교체합니다. 어느
단계라도 실패하면 적용된 파일을 전부 백업에서 되돌립니다. 서명된 매니페스트 밖의
경로는 별도 허용 목록에서 한 번 더 거부되고, 다운그레이드는
UBS_UPDATE_ALLOW_DOWNGRADE=true 없이는 거부됩니다. 미리 보려면
./build.sh update --dry-run을 쓰고, 쌓인 백업은
./build.sh update --prune-backups 30으로 정리합니다.
첫 설치는 어떻게 검증하나요?
install.sh를 먼저 내려받아
gh attestation verify install.sh --repo Claude-Personal/ubs --signer-workflow Claude-Personal/ubs/.github/workflows/attest-release.yml로
확인한 뒤 실행하세요. 가벼운 대안으로 매니페스트 서명 공개키의 SHA-256 지문이
README에 고정돼 있고 install.sh도 실행 중에 같은 값을 출력하므로, 두
값을 비교하면 됩니다. 설치 이후의 업데이트는 이미 로컬 디스크에 있는 공개키로
검증하므로 첫 설치와는 신뢰 기반이 다릅니다.
AI 에이전트에 연결할 수 있나요?
scripts/ubs_mcp.py가 같은 코어를 감싼 의존성 없는 stdio MCP
서버입니다. 기본으로는 읽기 전용 도구(ubs_detect·ubs_audit·ubs_plan·ubs_graph·ubs_update_check)만
노출되고, 실제 빌드는 서버에 UBS_MCP_ALLOW_BUILD=true가 있고 호출에
confirm=true가 있을 때만 실행됩니다. UBS_MCP_ROOT로
서버가 볼 수 있는 작업 범위를 제한합니다.
CLI가 영어로 나옵니다.
UBS_LANG=ko를 주면 항상 한국어로 나옵니다. 환경변수가 지원 언어를
지정하지 않으면 LC_ALL → LC_MESSAGES → LANG을
차례로 보고, macOS에서는 그다음에 시스템 언어까지 확인한 뒤 마지막에 영어로
떨어집니다. IDE·에이전트·launchd처럼 로그인 셸 밖에서 실행되면
LANG이 비어 있는 경우가 많아 이 순서가 필요합니다. 지원 언어는
ko·en·ja·zh입니다.
스토어 업로드에는 무엇이 필요한가요?
App Store Connect(.ipa/.pkg)는 ASC_API_KEY_ID,
ASC_API_ISSUER_ID, ASC_APPLE_ID, ASC_BUNDLE_ID와
확인 가능한 앱 버전이 필요합니다. Google Play(.aab)는
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON, GOOGLE_PLAY_PACKAGE_NAME이
필요하고 --track internal|alpha|beta|production으로 트랙을 고릅니다.
이 값들은 UBS를 실행하는 환경에만 있고, 업로드는 Apple·Google로 직접 갑니다.
계정이 없는데 데이터 삭제는 어떻게 요청하나요?
UBS에는 계정이 없고, CLI와 데스크톱 앱은 사용 기록을 서버로 보내지 않습니다. 이 웹사이트의 문의 폼으로 문의를 보낸 적이 있다면, 그 문의 내역의 삭제를 아래 폼에서 '문의 내역 삭제 요청'으로 신청할 수 있습니다.
문의 · 삭제 요청
답변은 남겨 주신 이메일로 갑니다. 보통 2~3 영업일 안에 회신합니다.
UBS에는 계정이 없고, CLI·데스크톱 앱이 사용 기록을 서버로 보내지 않습니다. 위 폼은 이 웹사이트의 문의 창구이며, 여기로 보낸 문의 내역의 삭제를 원하시면 '문의 내역 삭제 요청'으로 신청해 주세요.
버그 재현 절차나 로그가 긴 경우 GitHub Issues가 더 편합니다. 메일이 편하시면 service.help@outlook.kr로 보내셔도 됩니다.