Meta Skill (ms): 운영 지식을 구조화하고 재사용 가능한 아티팩트로 변환하는 스킬 관리 플랫폼
요약
Meta Skill (ms)은 운영 지식(operational knowledge)을 구조화하고 재사용 가능한 아티팩트로 변환하는 로컬 우선 스킬 관리 플랫폼입니다. 이 플랫폼은 듀얼 영속성, 하이브리드 검색, 적응형 제안 등 고급 기능을 제공하며, AI 에이전트에게 스킬을 네이티브 도구로 노출하는 기능까지 갖추고 있습니다.
핵심 포인트
- 운영 지식을 구조화하고 재사용 가능한 아티팩트로 변환합니다.
- SQLite와 Git 기반의 듀얼 영속성으로 속도와 책임성을 확보했습니다.
- 하이브리드 검색, 적응형 제안 등 고급 기능을 통합했습니다.
- AI 에이전트가 스킬을 네이티브 도구로 사용할 수 있도록 지원합니다.
**Meta Skill (ms)**은 운영 지식(operational knowledge)을 구조화되고 검색 가능하며 재사용 가능한 아티팩트(artifacts)로 전환하는 로컬 우선(local-first) 스킬 관리 플랫폼입니다. 이 플랫폼은 듀얼 영속성(SQLite + Git), 하이브리드 검색(lexical + semantic), 밴디트 최적화가 적용된 적응형 제안, 다층 보안(프롬프트 주입 방어 + 명령어 안전 게이트), 의존성 그래프 분석, 출처 추적(provenance tracking), 그리고 MCP를 통한 네이티브 AI 에이전트 통합 기능을 제공합니다.
cargo install --path .
또는 설치 없이 실행:
cargo run -- <COMMAND>
Linux, macOS, Windows에서 작동합니다. pinned nightly-2026-08-25 툴체인(Edition 2024; manifest API floor Rust 1.89)이 필요합니다.
서명된 게시 바이너리 및 해당 버전/도움말 출력을 확인하려면 Published release consumer checks를 참조하세요.
ms는 AI 세션에서 스킬을 추출하는 단순한 도구가 아닙니다. 이는 다음과 같은 핵심 기능을 갖춘 완전한 스킬 관리 플랫폼입니다:
| 기능 | 제공 내용 |
|---|---|
| Skill Storage (스킬 저장) | 쿼리를 위한 SQLite와 감사 추적(audit trails)을 위한 Git을 사용한 듀얼 영속성 |
| Semantic Search (시맨틱 검색) | Reciprocal Rank Fusion과 결합된 하이브리드 BM25 + 해시 임베딩 |
| Adaptive Suggestions (적응형 제안) | 피드백으로부터 학습하여 추천을 최적화하는 UCB 밴디트 알고리즘 |
| Security (보안) | ACIP 프롬프트 주입 방어 + DCG 파괴적 명령어 안전 게이트 |
| Graph Analysis (그래프 분석) | bv를 통한 의존성 통찰력: 사이클, 병목 현상(bottlenecks), PageRank, 실행 계획 |
| Provenance (출처) | |
| 스킬을 원본 세션에 연결하는 증거 추적(Evidence tracking) | |
| Multi-Machine Sync (다중 머신 동기화) | 충돌 해결 전략이 포함된 Git 기반 동기화 |
| Bundle Distribution (번들 배포) | 체크섬 및 안전 업데이트가 적용된 포터블 스킬 패키지 |
| Effectiveness Loop (효과성 루프) | 피드백, 결과, 실험, 품질 점수를 1급 데이터(first-class data)로 처리 |
| AI Agent Integration (AI 에이전트 통합) | Claude, Codex 등에게 스킬을 네이티브 도구로 노출하는 MCP 서버 |
| Anti-Pattern Mining (반패턴 채굴) | 세션 기록으로부터 실패 패턴을 자동 감지 |
| Token Packing (토큰 패킹) | 컨텍스트 예산 내에 스킬을 맞추기 위한 제약 최적화 |
| CASS Memory |
플레이북 규칙 및 히스토리 컨텍스트를 위한 cm 통합 |
스킬은 어디서든 가져올 수 있습니다. 직접 작성한 SKILL.md 파일, CASS 세션에서 마이닝된 데이터, 번들에서 임포트된 데이터, 또는 가이드 워크플로우를 통해 생성될 수 있습니다. CASS 통합은 하나의 입력 방법일 뿐, 정의적인 특징은 아닙니다.
# 로컬 ms 루트(.ms/) 초기화
ms init
# 스킬 경로 구성
...
모든 스킬은 두 곳에 저장됩니다:
SQLite: 빠른 쿼리, 필터링, 전체 텍스트 검색 및 메타데이터 작업을 위해 사용되며, **Git 아카이브 (Git archive)**는 불변의 히스토리, diff, 감사 추적(audit trails)을 위해 사용됩니다.
이는 프로덕션 시스템이 운영 속도와 책임성(accountability) 사이에서 균형을 맞추는 방식을 반영합니다. SQLite는 "지금 당장 무엇이 필요한가?"라는 질문에 밀리초 단위로 답합니다. Git은 필요할 때 "무슨 일이 일어났고 왜 그랬는지?"를 알려주며 출처(provenance)를 제공합니다.
이러한 분리는 또한 복원력(resilience)을 가능하게 합니다. 데이터베이스가 손상되어도 스킬들을 Git으로부터 재구축할 수 있습니다. Git 히스토리가 이용 불가능하더라도, 데이터베이스는 여전히 쿼리를 처리할 수 있습니다. 두 영속성 계층(persistence layer) 중 어느 것도 특권적이지 않습니다. 둘 다 각기 다른 요구 사항을 동등하게 충족합니다.
의미론적 검색(Semantic search)은 키워드가 구문 차이로 인해 실패하기 때문에 중요합니다. "오류 처리(Error handling)"와 "예외 관리(exception management)"는 일치해야 합니다. 하지만 외부 임베딩 모델은 종속성, 지연 시간 및 재현 가능성 문제를 야기합니다.
ms는 **결정론적 해시 임베딩 (deterministic hash embeddings)**을 사용합니다. 이는 FNV-1a 기반이며 384 차원을 가지며 로컬에서 계산됩니다. 동일한 텍스트는 어떤 기기, 어느 시점에서든 모델 다운로드나 API 호출 없이 항상 같은 벡터를 생성합니다. BM25 어휘 검색(lexical search) 및 RRF 융합과 결합되어 외부 종속성 없이 정밀도(exact matches)와 재현율(conceptual matches)을 모두 제공합니다.
RRF (Reciprocal Rank Fusion, 상호 순위 융합)를 사용하는 이유는 무엇일까요? 원시 점수(raw scores)로 병합하는 것은 불안정하기 때문입니다. BM25 점수와 임베딩 유사도는 서로 다른 스케일과 분포를 가집니다. RRF는 대신 순위 위치(rank positions)를 사용하며, 이는 신호를 정규화하고 쿼리 유형에 관계없이 안정적이고 예측 가능한 순위를 생성합니다.
정적인 랭킹 시스템은 적응할 수 없습니다. 이 추천 엔진은 피드백으로부터 학습하는 Thompson sampling bandit를 사용합니다:
- 각 신호 유형(BM25 점수, 의미적 유사성, 최신성, 피드백 평점 등)은 하나의 '팔(arm)'입니다.
- 성공/실패 피드백은 각 팔의 베타 분포를 업데이트합니다.
- UCB 탐색 보너스는 조기 수렴을 방지합니다.
- 컨텍스트 수정자는 프로젝트 유형, 시간대 및 기타 요인에 따라 가중치를 조정합니다.
시간이 지남에 따라 시스템은 사용자 워크플로우에 어떤 신호가 중요한지 학습합니다. 최신성을 중요하게 생각하는 팀은 최신성에 더 높은 가중치가 부여되는 것을 볼 것입니다. 의미적 일치가 키워드보다 뛰어난 코드베이스는 그에 맞춰 변화할 것입니다. 이것은 마법이 아니라, 지속적인 학습의 이점을 얻는 문제에 적용된 잘 알려진 알고리즘입니다.
AI 지원 워크플로우는 새로운 공격 표면을 만듭니다. ms는 여러 계층에서 방어를 구현합니다:
ACIP (Agent Content Injection Prevention): 콘텐츠를 신뢰 경계(사용자/어시스턴트/도구/파일)별로 분류하고 프롬프트 주입 시도를 격리합니다. 허용되지 않은 콘텐츠는 단순히 폐기되는 것이 아니라 검토를 위해 안전한 발췌문과 함께 저장됩니다. 재실행은 선택 사항이며 명시적인 승인을 필요로 합니다.
DCG (Destructive Command Guard): 셸 명령을 실행하기 전에 평가합니다. 명령어는 계층(안전/주의/위험/치명적)으로 분류되며 구성 가능한 승인 요구사항이 있습니다. 위험한 명령어의 경우 환경 변수를 통한 원문 그대로의 승인이 필요할 수 있습니다.
Path Policy: 심볼릭 링크 이스케이프 및 디렉터리 탐색 공격을 방지합니다. 모든 파일 작업은 허용된 루트를 기준으로 경로를 검증합니다.
Secret Scanning: 콘텐츠가 시스템에 들어가기 전에 자격 증명, API 키 및 PII(개인 식별 정보)를 감지하고 제거합니다.
스킬 의존성은 그래프를 형성합니다. ms는 그래프 알고리즘을 처음부터 구현하는 대신, 스킬을 비즈니스 카드 스타일의 JSONL 형식으로 변환하여 bv (beads_viewer)에 위임합니다.
PageRank은 다른 많은 스킬의 핵심을 이루는 키스톤 스킬(keystone skills)을 식별하고 Betweenness centrality는 진행을 방해하는 병목 지점(bottlenecks)을 찾고, Cycle detection은 순환 종속성(circular dependencies)을 드러내며, Critical path analysis는 병렬 트랙이 포함된 실행 계획을 생성합니다. HITS algorithm은 권위 있는 스킬과 허브를 구별합니다.
이는 쿼리에 SQLite를 사용하는 것과 같은 철학입니다: 각자 가장 잘하는 일에 검증된 도구를 사용하고 핵심 기능을 유지하는 것입니다. bv는 그래프 알고리즘을 가지고 있고, ms는 스킬 의미론(skill semantics)을 가지고 있습니다.
사용 피드백, 결과, 실험 및 품질 점수는 구조화된 데이터로 저장됩니다:
피드백 (Feedback): 스킬에 연결된 명시적 신호(도움됨/도움 안 됨, 평점, 댓글)
결과 (Outcomes): 조치된 제안의 성공/실패 표시자
실험 (Experiments): 변형 성능을 추적하는 A/B 테스트 기록
품질 점수 (Quality Scores): 세션 품질 신호(통과한 테스트, 명확한 해결, 백트래킹, 포기)
이것은
Rust 에러 처리 (Error Handling)
Rust 프로젝트에서 에러 처리를 위한 모범 사례.
개요
...
fn read_config(path: &str) -> Result<Config, ConfigError> {
let contents = std::fs::read_to_string(path)?;
toml::from_str(&contents).map_err(ConfigError::Parse)
}
가이드라인
- 라이브러리 에러에는
thiserror를, 애플리케이션 에러에는anyhow를 선호합니다. - 에러를 래핑할 때는 항상 컨텍스트를 포함해야 합니다.
...
이전 AI 에이전트 세션에서 패턴 추출:
단일샷 추출 (Single-shot extraction)
ms build --from-cass "error handling" --since "7 days"
체크포인트를 갖춘 가이드 워크플로우 (Guided workflow with checkpoints)
...
추출 파이프라인:
- CASS에서 관련 세션을 검색합니다.
- 품질 필터(명확한 해결책, 테스트 통과, 백트래킹 없음)를 적용합니다.
- 불확실성 정량화와 함께 패턴을 추출합니다.
- 구조화된 스킬 형식으로 합성합니다.
- 증거를 원본 세션에 연결합니다.
사전 패키징된 스킬 세트 설치:
ms install https://example.com/team-skills.msb
ms bundle install ./local-bundle.msb
번들(Bundles)은 체크섬과 파일별 해시로 검증됩니다. 업데이트는 로컬 수정 감지(local modification detection)에 의해 제한되므로 사용자의 편집 내용이 예고 없이 덮어쓰여지지 않습니다.
구성된 원격 저장소에서 스킬 가져오기:
ms remote add origin [email protected]:team/skills.git --remote-type git --auth ssh
ms sync
JeffreysPrompts Premium Cloud와 동기화하기:
ms remote add jfp https://pro.jeffreysprompts.com/api/ms/sync
--remote-type jfp-cloud
--auth token
...
전역 플래그는 모든 명령어에서 작동합니다:
--robot # stdout으로 JSON 출력 (자동화용)
--verbose # 로깅 상세도 증가
--quiet # 에러 외 출력을 억제
...
ms init # 현재 디렉토리에 .ms/ 생성
ms init --global # ~/.local/share/ms/에 생성
ms config # 현재 설정 표시
...
ms index # 구성된 모든 스킬 경로 인덱싱
ms index ./skills /other/path # 특정 경로 인덱싱
ms list # 모든 인덱싱된 스킬 목록 표시
...
ms search "error handling" # 하이브리드 검색 (BM25 + 시맨틱 + RRF)
ms search "async" --search-type bm25 # 렉시컬 전용
ms search "async" --search-type semantic # 시맨틱 전용
ms load rust-error-handling --level overview # 점진적 공개(Progressive disclosure)
ms load rust-error-handling --pack 2000 # 토큰 제한 패킹(Token-constrained packing)
ms load rust-error-handling --pack 800 --contract debug # 계약형 패킹 (Contracted packing) (debug/refactor/learn/quickref/codegen)
...
현재 프로젝트 컨텍스트를 기반으로 관련 스킬을 자동으로 로드합니다:
ms load --auto # 관련 스킬 자동 감지 및 로드
ms load --auto --threshold 0.5 # 점수가 0.5 이상인 스킬만 로드
ms load --auto --dry-run # 로드될 내용을 미리보기
...
자동 로딩은 프로젝트를 분석하여 관련 스킬을 결정합니다:
**프로젝트 감지(Project detection)**: 마커 파일에서 Rust, Node.js, Python, Go 등을 식별합니다.
**파일 패턴(File patterns)**: 최근 수정된 파일을 스킬 파일 패턴과 일치시킵니다.
**도구 감지(Tool detection)**: 설치된 도구(cargo, npm, pip 등)를 확인합니다.
**컨텍스트 신호(Context signals)**: 프레임워크/라이브러리 패턴을 찾기 위해 파일 내용을 스캔합니다.
스킬은 프론트매터(frontmatter)에서 컨텍스트 요구 사항을 지정할 수 있습니다:
name: rust-error-handling
context:
...
`config.toml`의 구성 옵션
:
[auto_load]
learning_enabled = true # 피드백을 통한 밴딧 학습(bandit learning) 활성화
exploration_rate = 0.1 # 새로운 스킬에 대한 탐색률(Rate of exploration)
...
패킹 계약(Pack contracts)을 사용하면 사용자 지정 패킹 규칙(필수 그룹, 가중치, 그룹당 최대 개수)을 영구 저장하고 세션 간 재사용할 수 있습니다.
ms contract list # 내장 및 사용자 정의 계약 표시
ms contract create debug-lite
--description "슬림 디버그 팩"
...
ms template list # 큐레이션된 템플릿 검색
ms template show debugging # 템플릿 마크다운 미리보기
ms template apply debugging
...
bv(beads_viewer)를 통해 스킬 종속성을 분석합니다:
ms graph insights # 전체 분석 (사이클, 키스톤, 병목 지점)
ms graph plan # 병렬 트랙을 포함한 실행 계획
ms graph triage # 최적의 다음 선택지
...
# 프롬프트 주입 방어(ACIP)
ms security status # ACIP 상태 확인
ms security scan --input "text" --session-id sess_1
...
# 피드백
ms feedback add rust-error-handling --positive --comment "몇 시간 절약"
ms feedback add rust-error-handling --rating 4
...
지표 및 결과:
- 사용
`--metric key=value`
`ms experiment record`에 쌍을 적용합니다. 값은 부울, 숫자 또는 문자열일 수 있습니다. 성공 여부는 선택한 지표 키(기본값: `task_success`)에서 추론됩니다. 여기서:`true`/`success`/숫자 > 0.5 => 성공`, `false`/`failure`/숫자 <= 0.5 => 실패
`ms experiment status`는 변형별 할당 및 결과 횟수를 집계하고 간단한 두 비율 z-검정 p-값을 보고합니다.
로봇 페이로드:
`ms experiment load --robot`은 일반적인 `ms load` JSON에 다음 블록을 추가하여 반환합니다: `experiment.id`, `experiment.metric`, `experiment.variant`, 및 할당 `event`.
ms bandit stats # 현재 암 가중치
ms bandit reset # 학습 초기화
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기