Microsoft Pragmatic Rust Guidelines를 AI 에이전트가 분야와 규칙별로 찾아볼 수 있도록 재구성한 스킬입니다. 원본 저장소는 microsoft/rust-guidelines입니다.
이 문서는 스킬을 설치·관리하는 사람을 위한 안내입니다. 에이전트가 Rust 코드를 작성하거나 검토할 때 참고할 진입점은 SKILL.md입니다.
-
대상 프로젝트에서 에이전트의 스킬 검색 디렉터리를 확인합니다.
-
이 저장소의 루트에서 스킬 폴더 전체를 복사합니다. 상대 경로 링크와 라이선스 고지가 유지되도록
SKILL.md,parts/,LICENSE.md가 함께 있어야 합니다.# TARGET_SKILLS_DIR: 대상 프로젝트의 스킬 검색 디렉터리 mkdir -p "$TARGET_SKILLS_DIR" cp -R skills/pragmatic-rust-guidelines "$TARGET_SKILLS_DIR/"
-
대상 에이전트 도구에 스킬 검색 경로를 설정하고
pragmatic-rust-guidelines를 참고해 Rust 코드를 작성하거나 검토해 달라고 요청합니다. 검색 경로 설정과 호출 방법은 도구마다 다릅니다.
SKILL.md: 적용 지침, 작업별 빠른 색인, 분야별 색인, 반영된 원본 저장소(upstream)의 리비전 정보. 에이전트의 시작점입니다. 상단에 원본 스타일의 저작권 및 라이선스 출처 식별 주석이 포함되어 있습니다.parts/: 분야별 목차와 각 규칙의 근거·본문. 아래 표에서 직접 열 수 있습니다.LICENSE.md: 원본 Microsoft Pragmatic Rust Guidelines의 MIT 라이선스 저작권 고지(Copyright notice) 및 허가문 전문(Permission notice). MIT 라이선스 요건을 온전히 충족하려면 단순 주석만이 아닌 본 전문 파일이 함께 배포되어야 합니다.scripts/: 생성 스크립트와 진입점 템플릿. 다른 프로젝트에서 스킬을 사용할 때는 복사할 필요가 없습니다..github/workflows/sync-upstream-skill.yml: upstream 가이드라인 변경을 감지하고 갱신 PR을 제안하는 GitHub Actions 자동화 워크플로.
| 분야 | 다루는 내용 |
|---|---|
| 공통 | Rust 전반의 관행, 정적 검증, 명명, 로깅 |
| 라이브러리 · 상호운용 | Rust·외부 타입과 trait, I/O |
| 라이브러리 · API UX | 추상화, 오류, 생성 패턴, 메서드 설계 |
| 라이브러리 · 견고성 | 테스트 가능성, 강한 타입, 전역 상태, 로깅 |
| 라이브러리 · 빌드 | 시작 경험, 시스템 의존 크레이트, Cargo 기능 |
| 매크로 | 선언형·프로시저 매크로 설계 |
| 애플리케이션 | 바이너리 오류 처리, 할당자, 대상 CPU |
| FFI | 상태 격리, 값 변환, 이름 지정 |
| 정확성 | unsafe, soundness, panic |
| 성능 | 처리량, 메모리·할당, 해싱, 비동기 스택 |
| 프로젝트 | Cargo workspace, 크레이트 구조, MSRV |
| 문서 | 첫 문장, 모듈 문서, 정본 링크, 인라인 문서 |
| AI 지원 | 항목별 탐색, 테스트, Rust다운 설계 |
원본 저장소는 에이전트용으로 지침을 모은 단일 파일 src/agents/all.txt를 제공합니다. 이 프로젝트는 같은 원본 가이드라인을 SKILL.md 진입점과 분야별 parts/로 나누어, 에이전트가 현재 작업에 필요한 지침을 선택적으로 찾아 읽도록 구성합니다.
SKILL.md의 작업별·분야별 색인에서 관련 규칙으로 이동하고, 해당 규칙의 근거·예외·코드 예시를 확인하는 흐름입니다. 단순히 문서를 분할하는 데 그치지 않고, 규칙별 앵커와 내부 링크, 적용 지침을 함께 제공해 탐색과 적용을 돕습니다.
분야별 규칙의 텍스트 본문·근거·코드 예시는 포함하되, 링크와 표시 형식은 스킬에 맞게 정리합니다.
| 구분 | 처리 방식 |
|---|---|
| 개요·체크리스트 | src/guidelines/README.md의 가이드북 소개·기고 절차와 src/guidelines/checklist/README.md의 전체 점검표는 포함하지 않습니다. 핵심 적용 원칙(must/should의 유연성, Spirit Over Letter)은 SKILL.md에 담습니다. |
| 이미지 | 09-docs.md(M-FIRST-DOC-SENTENCE, M-DOC-INLINE)의 rustdoc 화면 캡처 4개와 02-1-libs-interop.md(M-TYPES-SEND)의 성능 그래프 1개를 포함하지 않습니다. |
| 표시 형식 | PNG 이미지 태그와 단독 <div> 래퍼를 생략하고, 원본의 보충 설명·주의 표식(<tip></tip>, <alert></alert>)을 Tip: ·Caution: 으로 바꿉니다. |
| 규칙 참조 | 이전 식별자와 현재 대응 규칙이 없는 참조를 각각 처리하여 링크 정합성을 유지합니다. (상세 내용은 아래 '규칙 교차 참조 정합성 보정' 참고) |
| 표기 정합화 | M-FROM-ERROR 설명 문장의 .map_error() 표기 2곳을 생성 시 Rust 표준 라이브러리 Result::map_err 명칭에 맞춰 정규화합니다. upstream 원문이 갱신되어 반영되면 본 보정 코드는 제거됩니다. |
이미지의 시각 정보는 스킬에 없습니다. 화면 배치나 성능 그래프의 비교가 필요하면 원본 문서를 확인하세요. #[doc(inline)] 사용 조건, 첫 문장 길이, Send 호환성과 성능상 주의점은 텍스트 본문에 남아 있습니다. 미해결 규칙 참조의 내용은 추측하거나 다른 규칙으로 대체하지 않습니다.
각 규칙에는 고유 ID 기반 앵커(<a id="M-..."></a>)가 있습니다. SKILL.md의 색인은 이 앵커를 가리키며, 앵커 이동을 지원하지 않는 도구에서는 해당 ID를 검색해 규칙을 찾을 수 있습니다.
upstream 가이드라인 본문에는 이전 식별자를 유지하는 참조와 현재 원본에 대응하는 독립 규칙이 없는 참조가 있습니다. 빌드 스크립트는 이를 감지하여 다음과 같이 정합성을 보정합니다.
- 이전 규칙 ID(별칭) 연결: 과거 식별자인
M-ABSTRACTIONS-DONT-NEST와M-DOC-FIRST-SENTENCE는 현재 개정된 공식 규칙(M-SIMPLE-ABSTRACTIONS,M-FIRST-DOC-SENTENCE)의 앵커로 자동 연결합니다. - 대응 규칙이 없는 참조 보존: 현재 원본에 대응하는 독립 규칙이 없는
M-RUNTIME-ABSTRACTED의 경우, 임의로 다른 규칙으로 대체하거나 내용을 추측하지 않고 텍스트를 그대로 보존하되Unavailable source reference안내를 표기합니다.
이 저장소는 독립된 프로젝트로 운영되며, microsoft/rust-guidelines의 main 브랜치 내 src/guidelines 트리를 추적합니다. 저장소 내에는 upstream의 원본 src/ 전체를 복사·커밋하지 않고 .github/와 scripts/, 그리고 생성된 스킬(skills/pragmatic-rust-guidelines/)만을 관리합니다.
GitHub Actions 워크플로(.github/workflows/sync-upstream-skill.yml)를 통해 정기적으로 upstream 변경을 감지하고 갱신 PR을 제안합니다.
- 실행 주기: 매주 월요일 05:00 한국 시간(일요일 20:00 UTC)에 정기 실행 (
schedule) 및 수동 실행 (workflow_dispatch). - 변경 감지 기준: upstream
microsoft/rust-guidelines의HEAD:src/guidelinesGit tree SHA와 현재skills/pragmatic-rust-guidelines/SKILL.md에 기록된Guidelines tree:SHA를 비교합니다. - Tree SHA와 Commit SHA의 차이: Commit SHA는 upstream 저장소 전체의 변경(루트 문서, 타 디렉터리, CI 등)을 모두 반영하지만, Guidelines Tree SHA는
src/guidelines내부 파일 내용이 실제로 변경되었을 때만 바뀝니다. 따라서 가이드라인 본문과 무관한 커밋으로 인한 불필요한 스킬 재생성을 원천 차단합니다. - 부트스트랩 처리: 기존
SKILL.md에Guidelines tree:항목이 없으면 워크플로가 이를 최초 생성이 필요한 상태로 간주하고 갱신 PR을 제안합니다. 현재 저장소의 스킬에는 이 항목이 기록되어 있으며, 일반적인 갱신에서는 upstream의 tree SHA와 비교합니다.
- 저장소 체크아웃 및 upstream 준비: 워크플로 러너에 이 저장소를 checkout하고,
$RUNNER_TEMP임시 디렉터리에 upstream 저장소(microsoft/rust-guidelines)의src/guidelines만 sparse checkout으로 준비합니다. - 변경 감지 (
detect): upstreamHEAD:src/guidelines의 Git tree SHA와 현재skills/pragmatic-rust-guidelines/SKILL.md의Guidelines tree:줄을 엄격히 비교합니다. 항목이 없으면 부트스트랩 빌드로 처리하며, 다중 항목이나 형식 오류가 발견되면 워크플로를 즉시 실패 처리합니다. - 조건부 스킬 빌드 (
build): Guidelines tree SHA가 다르거나 수동 실행 시force=true인 경우에만scripts/build_agent_skills.sh를 실행하여 스킬을 재생성합니다. 동일한 tree SHA의 정기 실행 또는force=false수동 실행은 빌드와 PR 단계를 건너뜁니다. - 단일 PR 제안 (
peter-evans/create-pull-request): 빌드가 성공하고skills/pragmatic-rust-guidelines/내에 실제 변경 사항이 존재하는 경우,automation/upstream-guidelines브랜치에 단일 PR을 생성하거나 기존 PR을 갱신합니다 (main브랜치에 직접 push하지 않으며 사람이 리뷰 후 병합합니다). 변경 사항이 없으면 PR을 만들지 않습니다. - 실패 격리 및 무결성 보장: clone, 검증, 빌드 중 오류가 발생하면 워크플로가 즉시 실패로 중단되며 PR을 생성하지 않고 기존 정상 스킬을 유지합니다.
upstream에서 등록되지 않은 규칙 ID를 가리키는 참조가 발견되거나 기존 별칭·미해결 참조 예외의 전제가 깨지면, 워크플로는 안전을 위해 빌드를 즉시 중단하고 GitHub Actions에 문제 파일과 대상 ID가 포함된 오류(::error::)를 남깁니다. 후속 PR 생성 단계는 실행되지 않으며 기존 정상 스킬이 보존됩니다.
- 과거 규칙 ID 별칭 (
RULE_ID_ALIASES): upstream에서 규칙 ID를 바꾼 후 기존 문서의 링크를 미처 갱신하지 않은 경우에 사용합니다. 만약 upstream이 대상 규칙을 삭제·재변경하거나, 과거 ID가 새로운 공식 규칙으로 채택되어 별칭과 중복되면 빌드가 중단됩니다. 관리자는scripts/build_agent_skills.sh의RULE_ID_ALIASES매핑을 확인하여 대상 ID를 갱신하거나 항목을 제거합니다. - 대응 규칙이 없는 참조 (
UNRESOLVED_RULE_REFS): upstream 가이드라인에서 참조하지만 대응하는 독립 규칙 파일이 존재하지 않는 경우(예:M-RUNTIME-ABSTRACTED) 링크를 비활성화하고 안내문을 남깁니다. 만약 upstream에 해당 ID의 실제 규칙 파일이 새로 추가되면 예외 전제가 깨지므로 사전 검증 단계에서 빌드가 중단됩니다. 관리자는 upstream 규칙의 추가 내용을 확인한 후UNRESOLVED_RULE_REFS에서 해당 ID를 제거하고 빌드를 재실행합니다. - 새로운 알 수 없는 규칙 참조 발생 시: 원인을 확인하지 않고 임의로
UNRESOLVED_RULE_REFS에 추가하지 않습니다. upstream 원본의 오타인지, 이름 변경 누락인지 확인한 뒤 조치합니다.
로컬에서 직접 스킬을 재생성하려면 별도의 임시 upstream sparse checkout을 준비한 뒤 빌더 스크립트를 실행합니다.
실행 환경 안내: 빌더 스크립트(
scripts/build_agent_skills.sh)는 Bash 4 이상(declare -A,mapfile)과 GNU coreutils(realpath -m)를 필요로 합니다. Ubuntu 등 표준 Linux 환경이나 WSL, GNU 도구가 설치된 환경을 권장합니다. macOS 기본 Bash(3.2) 및 BSDrealpath환경에서는 그대로 실행할 수 없습니다.
# 1. 별도 임시 디렉터리에 upstream 저장소의 src/guidelines만 sparse checkout
UPSTREAM_TMP="$(mktemp -d)"
git clone --depth=1 --filter=blob:none --sparse --branch main https://github.com/microsoft/rust-guidelines.git "$UPSTREAM_TMP/rust-guidelines"
git -C "$UPSTREAM_TMP/rust-guidelines" sparse-checkout set src/guidelines
# 2. 저장소 루트에서 빌더 실행 (upstream 작업 트리의 절대 경로 전달)
bash scripts/build_agent_skills.sh "$UPSTREAM_TMP/rust-guidelines"
# 3. 임시 upstream 디렉터리 정리
rm -rf "$UPSTREAM_TMP"빌드 결과는 skills/pragmatic-rust-guidelines/의 SKILL.md, 13개 분야별 파트, 그리고 LICENSE.md입니다. SKILL.md의 Source Revision 섹션에서 반영된 upstream 커밋 SHA, 커밋 날짜, Guidelines Git tree SHA를 확인할 수 있습니다.
scripts/build_agent_skills.sh는 다음 10단계를 거쳐 스킬을 안전하게 만듭니다.
- upstream 소스 리비전 및 입력 무결성 검증: 전달된 경로가 Git 저장소 최상위 루트인지,
HEAD:src/guidelines트리가 존재하는지, 작업 트리 내src/guidelines의 tracked/staged/untracked 변경 사항이 없는 깨끗한 상태인지 검증합니다. 통과 시 commit SHA, commit date, guidelines tree SHA를 획득합니다. - 원본 규칙 목록 구성 및 누락·예외 목록 검증: 13개 분야 디렉터리와 README.md include 구문을 분석하여 규칙 ID 매핑을 구축하고,
src/guidelines아래 모든M-*.md파일이 빠짐없이 카테고리에 매핑되었는지 전수 검증합니다. 아울러RULE_ID_ALIASES의 대상 존재 및 충돌 여부,UNRESOLVED_RULE_REFS대상 규칙의 upstream 추가 여부를 사전 검증하여 예외 전제가 깨진 경우 즉시 실패 처리합니다. - 템플릿 조기 검증: 출력 디렉터리를 변경하기 전에
scripts/SKILL.md.template파일의 존재 및 필수 치환 표식(<!-- ROUTING_TABLE_ENTRIES -->,<!-- UPSTREAM_SOURCE_REVISION -->)의 포함 여부를 미리 확인합니다. - 임시 스테이징 디렉터리 준비: 기존 스킬 파일을 즉시 삭제하지 않고 격리된 임시 작업 디렉터리(
skills/.build_stage.*)를 생성하여 파트 파일들과 라이선스(LICENSE.md)를 먼저 안전하게 생성할 수 있도록 준비합니다. - 분야별 파트 작성: 공식 공개 순서대로 13개 파트 파일을 스테이징 공간에 작성합니다. 각 파일에는 분야 소개, 목차(TOC)와 규칙별 Rationale 요약, 정제된 규칙 본문이 들어갑니다. 코드 블록(fence)을 정밀 추적하여 이미지 생략, 권고 라벨 변환, 파트 간 링크 재작성 시 코드 내부 내용을 온전히 보존하며, 고유 앵커 삽입,
<why>의Rationale변환, 버전 태그 생략 등을 정제 파이프라인으로 적용합니다. - 파트와 규칙 앵커 확인: 실제 생성된 총 규칙 수가 2단계에서 파악한 원본 규칙 수와 정확히 일치하는지, 각 파트 파일에 해당 규칙의 고유 앵커(
<a id="M-..."></a>)가 빠짐없이 들어갔는지 스테이징 공간에서 검사합니다. SKILL.md작성:scripts/SKILL.md.template을 읽어 분야별 색인 표와 출처 리비전 정보(저장소 URL, 커밋 SHA, 커밋 날짜, Guidelines tree SHA)를 치환한SKILL.md를 스테이징 공간에 작성합니다.- 생성 문서의 연결 전수 검사: 스테이징 공간에 생성된 모든 Markdown 파일 내의 상대 링크와 규칙 앵커 대상이 실제로 존재하는지 전수 검사합니다. 아울러
SKILL.md에 언급된 모든 규칙 ID가 유효한 ID인지 검증합니다. - 백업 및 복원 트랜잭션을 통한 최종 반영: 모든 검증을 통과한 경우, 기존 배포 디렉터리를 임시 백업(
skills/.build_backup.*)으로 이동한 뒤 검증된 스테이징 디렉터리를 배포 위치로 승격합니다(mv). 승격 완료 전에 오류나 시그널이 발생하면 트랩이 백업으로부터 이전 배포본 복원을 시도하여 불완전한 상태로 방치되는 것을 방지합니다. - 완료 결과 출력: 생성된 파트 수(13개), 원본에서 정제된 총 규칙 수(upstream 리비전에 따라 콘솔에 동적 출력), 스킬 디렉터리 및 진입점 파일 경로를 콘솔에 출력하고 종료합니다.
원본 Microsoft Pragmatic Rust Guidelines는 MIT License로 배포되며, 본 프로젝트의 LICENSE.md 및 스킬 디렉터리 skills/pragmatic-rust-guidelines/LICENSE.md에 저작권 및 허가문 전문이 보존되어 배포됩니다.