Table of Contents

로컬 개발 가이드

이 가이드는 릴리스를 게시하거나 먼저 main에 커밋하지 않고 spec-mix CLI를 로컬에서 반복하는 방법을 보여줍니다.

스크립트는 이제 Bash(.sh)와 PowerShell(.ps1) 버전을 모두 제공합니다. CLI는 --script sh|ps를 전달하지 않는 한 OS를 기반으로 자동 선택합니다.

1. 클론 및 브랜치 전환

git clone https://github.com/dan1901/spec-mix.git
cd spec-mix
# 기능 브랜치에서 작업
git checkout -b your-feature-branch

2. CLI 직접 실행 (가장 빠른 피드백)

아무것도 설치하지 않고 모듈 진입점을 통해 CLI를 실행할 수 있습니다:

# 저장소 루트에서
python -m src.specmix --help
python -m src.specmix init demo-project --ai claude --ignore-agent-tools --script sh

스크립트 파일 스타일 호출을 선호하는 경우 (shebang 사용):

python src/specmix/__init__.py init demo-project --script ps

3. 편집 가능한 설치 사용 (격리된 환경)

uv를 사용하여 격리된 환경을 만들면 최종 사용자가 받는 것과 정확히 같이 종속성이 해결됩니다:

# 가상 환경 생성 및 활성화 (uv가 자동으로 .venv 관리)
uv venv
source .venv/bin/activate  # Windows PowerShell: .venv\Scripts\Activate.ps1

# 편집 가능한 모드로 프로젝트 설치
uv pip install -e .

# 이제 'spec-mix' 진입점을 사용할 수 있습니다
spec-mix --help

편집 가능한 모드이므로 코드 편집 후 재실행할 때 재설치가 필요하지 않습니다.

4. Git에서 uvx로 직접 호출 (현재 브랜치)

uvx는 로컬 경로(또는 Git 참조)에서 실행하여 사용자 흐름을 시뮬레이션할 수 있습니다:

uvx --from . spec-mix init demo-uvx --ai copilot --ignore-agent-tools --script sh

병합하지 않고 특정 브랜치를 uvx로 가리킬 수도 있습니다:

# 먼저 작업 브랜치를 푸시
git push origin your-feature-branch
uvx --from git+https://github.com/dan1901/spec-mix.git@your-feature-branch spec-mix init demo-branch-test --script ps

4a. 절대 경로 uvx (어디서나 실행)

다른 디렉토리에 있는 경우 . 대신 절대 경로를 사용하세요:

uvx --from /path/to/spec-mix spec-mix --help
uvx --from /path/to/spec-mix spec-mix init demo-anywhere --ai copilot --ignore-agent-tools --script sh

편의를 위해 환경 변수 설정:

export SPEC_MIX_SRC=/path/to/spec-mix
uvx --from "$SPEC_MIX_SRC" spec-mix init demo-env --ai copilot --ignore-agent-tools --script ps

(선택 사항) 셸 함수 정의:

spec-mix-dev() { uvx --from /path/to/spec-mix spec-mix "$@"; }
# 그런 다음
spec-mix-dev --help

5. 스크립트 권한 로직 테스트

init을 실행한 후 POSIX 시스템에서 셸 스크립트가 실행 가능한지 확인하세요:

ls -l scripts | grep .sh
# 소유자 실행 비트를 예상 (예: -rwxr-xr-x)

Windows에서는 대신 .ps1 스크립트를 사용합니다 (chmod 필요 없음).

6. 린트 / 기본 검사 실행 (직접 추가)

현재 번들로 제공되는 린트 구성은 없지만 가져오기 가능성을 빠르게 검사할 수 있습니다:

python -c "import specmix; print('Import OK')"

7. 로컬로 휠 빌드 (선택 사항)

게시하기 전에 패키징 검증:

uv build
ls dist/

필요한 경우 빌드된 아티팩트를 새로운 임시 환경에 설치하세요.

8. 임시 작업 공간 사용

더러운 디렉토리에서 init --here를 테스트할 때 임시 작업 공간을 만드세요:

mkdir /tmp/spec-test && cd /tmp/spec-test
python -m src.specmix init --here --ai claude --ignore-agent-tools --script sh  # 저장소를 여기에 복사한 경우

또는 더 가벼운 샌드박스를 원하는 경우 수정된 CLI 부분만 복사하세요.

9. 네트워크 / TLS 건너뛰기 디버그

실험하는 동안 TLS 검증을 우회해야 하는 경우:

spec-mix check --skip-tls
spec-mix init demo --skip-tls --ai gemini --ignore-agent-tools --script ps

(로컬 실험용으로만 사용하세요.)

10. 빠른 편집 루프 요약

작업 명령
CLI 직접 실행 python -m src.specmix --help
편집 가능한 설치 uv pip install -e . 그런 다음 spec-mix ...
로컬 uvx 실행 (저장소 루트) uvx --from . spec-mix ...
로컬 uvx 실행 (절대 경로) uvx --from /path/to/spec-mix spec-mix ...
Git 브랜치 uvx uvx --from git+URL@branch spec-mix ...
휠 빌드 uv build

11. 정리

빌드 아티팩트 / 가상 환경을 빠르게 제거:

rm -rf .venv dist build *.egg-info

12. 일반적인 문제

증상 해결 방법
ModuleNotFoundError: typer uv pip install -e . 실행
스크립트가 실행 가능하지 않음 (Linux) init을 다시 실행하거나 chmod +x scripts/*.sh
Git 단계가 건너뜀 --no-git을 전달했거나 Git이 설치되지 않음
잘못된 스크립트 유형 다운로드 --script sh 또는 --script ps를 명시적으로 전달
기업 네트워크의 TLS 오류 --skip-tls 시도 (프로덕션용 아님)

13. 다음 단계

  • 문서를 업데이트하고 수정된 CLI를 사용하여 빠른 시작을 실행
  • 만족하면 PR 열기
  • (선택 사항) 변경 사항이 main에 적용되면 릴리스 태그