Community코딩 & 개발github.com

chshzh/charlie-claude

Nordic nRF Connect SDK 개발, 디버깅 및 워크플로 자동화를 위한 개인 Claude 스킬 모음입니다.

charlie-claude란 무엇인가요?

이 스킬은 Git 커밋 워크플로를 자동화하여 Claude가 코드 변경 사항을 검토하고, 논리적 단위로 커밋을 분할하며, Conventional Commits 또는 Zephyr 스타일 메시지를 생성할 수 있도록 합니다. 사용자 앱 저장소와 NCS/Zephyr 저장소 모두를 지원하며, 저장소 유형을 자동 감지하여 적절한 커밋 메시지 형식을 적용합니다. 주요 기능으로는 작업 트리 검사, 커밋 계획 제안 및 승인 대기, 승인된 커밋 실행, 단일 파일 내 변경 사항 분할, 에이전트 스킬 자체의 자체 업데이트 정책이 포함됩니다. 특히 Zephyr 및 NCS 커밋에 필요한 DCO(Deweloped-off-by) 서명, noup/fromlist/fromtree 태그, Assisted-by 속성 등 NCS 관련 Git 규칙을 철저히 준수합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add chshzh/charlie-claude

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Git 커밋 워크플로

중요 규칙

  1. 커밋 전 검사: 항상 git diff .를 실행하여 커밋을 제안하거나 생성하기 전에 전체 작업 트리를 검토합니다.
  2. 계획 먼저, 커밋은 나중에: 커밋 계획(파일 그룹, 근거, 제안 메시지)을 제시하고 명시적인 사용자 승인을 기다린 후 git commit을 실행합니다.
  3. 논리적 변경으로 분할: 관련 없는 수정, 리팩터, 문서, 서식 변경 또는 생성된 파일을 혼합하지 말고 관심사별로 커밋을 분리합니다. 단, 사용자가 명시적으로 요청한 경우는 예외입니다.
  4. 대화형 명령어 사용 금지: 비대화형 Git 명령어만 사용합니다.
  5. 절대 권한을 가정하지 않음: '변경 사항 커밋' 요청을 검사 및 계획 권한으로만 간주하고, git commit 실행 권한으로 간주하지 않습니다.

워크플로

1단계 — 작업 트리 검사

git diff .
git status --short
git diff --cached   # 스테이징된 변경 사항이 있는 경우에만

2단계 — 커밋 계획 제안

다음을 보여주는 표 또는 목록을 제시합니다.

  • 그룹: 각 제안 커밋에 대한 파일 집합
  • 근거: 이러한 파일들이 함께 속하는 이유
  • 제안 커밋 메시지: 저장소에 맞는 올바른 스타일 사용 (아래 커밋 메시지 형식 참조)

3단계 — 승인 대기

계획을 제시한 후, AskQuestion 도구를 사용하여 승인을 받습니다. 항상 다음 옵션을 제공합니다.

Question: "이 커밋 계획을 진행할까요?"
Options:
  - "승인 — 계획대로 커밋"
  - "커밋 메시지 먼저 수정"
  - "커밋 재그룹화"
  - "취소"

사용자가 승인을 선택할 때까지 git commit을 실행하지 마십시오. 다른 선택은 계획을 수정하라는 요청으로 간주합니다.

4단계 — 승인된 커밋 실행

각 승인된 커밋에 대해 관련 파일만 스테이징하고 커밋합니다.

git add <file1> <file2> ...
git commit -s -m "type(scope): description"

필요할 경우 여러 줄 메시지에는 HEREDOC을 사용합니다.

git commit -s -m "$(cat <<'EOF'
type(scope): 짧은 요약

- 세부 사항 1
- 세부 사항 2
EOF
)"

커밋 메시지 형식

먼저 저장소 유형 감지

저장소스타일
사용자 앱 저장소 (개인 프로젝트)Conventional Commits
zephyr/, nrf/, nrfxlib/, modules/Zephyr 스타일

사용자 앱 저장소 — Conventional Commits

類型(scope): 짧은 요약

일반 유형: feat, fix, refactor, docs, chore, test, style, build. 제목 ≤ 72자. 본문은 선택 사항이지만 중요하지 않은 변경 사항에는 유용합니다.

NCS / Zephyr 저장소 — Zephyr 스타일

[nrf tag] area: subarea: 짧은 요약

본문: 무엇을, 왜, 가정, 어떻게 검증되었는지 설명.

Upstream PR #: NNNNN          (상류에서 포팅하는 경우)
Ref: NCSDK-XXXXX              (내부 티켓을 추적하는 경우)
Assisted-by: Claude:claude-sonnet-4.6   (AI 지원인 경우)
Signed-off-by: 전체 이름 <email>
  • 제목 ≤ 72자; 본문 필수 (비어 있지 않음) — 상류 PR의 경우 CI가 빈 본문을 거부합니다.
  • 본문 줄 ≤ 75자
  • Signed-off-by: 필수 (DCO) — git commit -s 사용
  • NRF 접두사 태그: [nrf fromlist] (상류로), [nrf fromtree] (상류에서), [nrf noup] (NCS 전용), [nrf ncsdk] (SDK 전용)
  • AI가 상당한 코드를 작성한 경우 Assisted-by: 추가

예시:

[nrf fromlist] drivers: nrf_wifi: add WPA3-AUTO security type

The wpa_supplicant requires a dedicated key_mgmt enum value for
WPA3-AUTO mode. Without this, stations advertising both WPA2 and
WPA3 fail key exchange.

Upstream PR #: 106674
Signed-off-by: Your Name <[email protected]>
[nrf noup] tests: my_module: add unit test for zero-length buffer

Tests the boundary condition where input buffer length equals zero,
which previously triggered an assertion in the parser.

Ref: NCSDK-12345
Signed-off-by: Your Name <[email protected]>

그룹화 지침

변경 유형별도 커밋?
새 기능 코드예
버그 수정예
리팩터 (동작 변경 없음)예
설정 / Kconfig 변경예 (또는 관련 기능과 함께)
문서 / README예 (기능과 밀접하게 결합되지 않은 경우)
서식 / 공백만예
생성 / 자동 업데이트된 파일예
보드 오버레이 + 관련 prj.conf함께 그룹화 가능
Sysbuild 파일논리적 목적별로 그룹화

NCS 특별 참고 사항

파일 그룹화:

  • prj.conf, boards/*.conf, overlay-*.conf — 활성화하는 기능과 함께 그룹화
  • CMakeLists.txt 변경 — 기능 추가의 일부가 아닌 경우 별도 커밋
  • west.yml 변경 — 항상 명확한 근거와 함께 별도 커밋
  • sysbuild/ 파일 — 논리적 목적별로 그룹화 (예: mcuboot 설정 변경 함께)
  • 생성된 파티션 관리자 파일 (pm/, *.map) — 별도의 chore 커밋 또는 의미 없는 경우 생략

NCS/Zephyr 저장소 (zephyr/, nrf/, nrfxlib/):

  • Zephyr 스타일 사용 (위 참조), Conventional Commits 사용하지 않음
  • 항상 비어 있지 않은 본문 포함 — CI가 상류 PR에 대해 빈 본문을 거부합니다.
  • git log -- <file> 실행하여 동일한 서브시스템에 대한 다른 사람의 커밋 형식을 확인합니다.

단일 파일 내 변경 사항 분할

하나의 파일에 두 개 이상의 논리적으로 구분된 변경 사항이 포함되어 별도 커밋에 속하는 경우(예: 버그 수정 + 새로운 정책 섹션), 대화형 스테이징 없이 분할합니다.

  1. 파일에서 나중 섹션을 일시적으로 제거합니다(Python 또는 StrReplace 사용).
  2. 첫 번째 변경 사항을 스테이징하고 커밋합니다.
  3. 제거된 섹션을 복원합니다.
  4. 두 번째 변경 사항을 스테이징하고 커밋합니다.
MARKER = "\n## Self-Update Policy\n"
text = path.read_text()
path.write_text(text[:text.find(MARKER)])  # 나중 섹션 제거
# → git add + commit "fix: ..."
path.write_text(text)                      # 전체 내용 복원
# → git add + commit "feat: ..."

이유: git log -p <file>은 각 논리적 변경 사항을 자체 커밋에 표시하여 이분 탐색, 검토 또는 개별 되돌리기가 더 쉬워집니다.

주의점: 마커가 함수/블록 닫는 줄 앞에 있는지 항상 확인하십시오. 마커가 함수의 마지막 문장인 경우, 제거된 파일에 return과 }가 누락되어 expected declaration or statement at end of input 오류가 발생할 수 있습니다.

자체 업데이트 정책

각 대화가 끝날 때, 새로 발견된 사항을 검토하고 이 스킬의 어떤 사실이 새롭거나, 수정되었거나, 오래되었는지 확인합니다(예: 새로운 그룹화 패턴, NCS 파일 규칙, 커밋 메시지 규칙).

업데이트가 필요한 경우:

  1. 각 변경 사항에 대한 간략한 근거와 함께 모든 제안 변경 사항을 수집합니다.
  2. 사용자에게 요약을 제시하고 AskQuestion을 사용하여 승인을 요청합니다.
  3. 승인된 업데이트를 이 파일에 즉시 적용합니다.

사용자가 명시적으로 요청하지 않는 한, 대화 중간에 이 스킬을 수정하지 마십시오.

관련 스킬