Community생산성 & 협업github.com

mrachny/decision-matrix-skill

가중치 기반 결정 매트릭스를 통해 여러 경쟁 요소가 있는 실제 옵션(직장 제안, 아파트, 도시, 공급업체, 학위, 자동차, 채용, 도구, 여행지 등 '그냥 가장 싼 것'만으로는 부족한 경우) 중에서 선택할 수 있도록 안내합니다. 실제로 중요한 상위 5~10개 기준을 도출하고, 가중치를 부여하며, 각 옵션이 각 기준을 얼마나 잘 충족하는지(1~10점, 셀별 인용 근거 포함) 조사한 후, 가중치 합계를 계산하고 마크다운 테이블과 가중치 및 포함된 옵션을 실시간으로 조정할 수 있는 독립형 대화형 HTML 보고서를 생성합니다. 누군가 옵션을 비교하는 데 어려움을 겪거나, '어느 것을 골라야 할까요' / '결정을 도와주세요'라고 물을 때 사용합니다.

decision-matrix-skill란 무엇인가요?

이 스킬은 사용자가 여러 대안 중에서 결정을 내릴 때 체계적이고 검증 가능한 방법을 제공합니다. 사용자로부터 결정 주제, 옵션, 주요 기준을 한 번에 수집한 후, 해당 유형의 결정에 일반적으로 중요한 5~10개의 기준(예: 급여, 성장 가능성, 통근 시간 등)을 제안하고 각각의 정의와 가중치(1~10점)를 포함한 초안을 제공합니다. 그런 다음 각 옵션이 각 기준을 얼마나 잘 충족하는지 실제로 조사하여 1~10점으로 점수를 매기고, 점수당 한 문장의 근거를 제시합니다. 최종적으로 가중치 합계를 계산하여 마크다운 테이블과 완전히 독립형인 대화형 HTML 보고서를 생성합니다. 이 보고서는 사용자가 브라우저에서 직접 열어 가중치와 옵션 포함 여부를 조정하며 순위 변화를 실시간으로 확인할 수 있으며, 결정의 민감도를 쉽게 테스트할 수 있습니다. Claude Code, Cursor 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mrachny/decision-matrix-skill/tree/HEAD

Installed? Explore more 생산성 & 협업 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

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

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

문서

결정 매트릭스

가중치 기반 결정 매트릭스는 "결정을 내릴 수 없어"를 방어 가능하고 검증 가능한 숫자로 바꿔줍니다. 하지만 숫자는 그 기준, 가중치, 그리고 그 뒤에 있는 조사만큼만 가치가 있습니다. 당신의 역할은 단순히 표를 채우는 것이 아니라 생각하는 것(무엇이 중요한지, 얼마나 중요한지, 각 옵션이 실제로 얼마나 잘 맞는지)입니다. 마지막에 나오는 HTML 보고서는 그 생각을 잘 수행한 결과물일 뿐, 연습의 목적 자체는 아닙니다.

1. 결정이 이 방법에 적합한지 확인하세요

이 방법은 2~8개의 개별 옵션과 서로 다른 방향으로 끌어당기는 여러 기준(더 싼 것 vs. 더 좋은 것, 더 빠른 것 vs. 더 안전한 것)이 있을 때 빛을 발합니다. 다음과 같은 경우에는 과잉이거나 잘못된 도구입니다:

  • 실제로 중요한 요소가 하나뿐인 경우("어느 것이 더 싼가") — 그냥 답변하세요.
  • 예/아니오 결정이며, 대안 중에서 선택하는 것이 아닌 경우.
  • 옵션 공간이 사실상 무제한인 경우(예: 아직 후보 목록 없이 "어디서 살까") — 먼저 후보를 좁히도록 도와준 후, 후보 목록에 대해 매트릭스를 실행하세요.

적합하다면 간단히 언급하고 넘어가세요. 결정 매트릭스를 사용한다고 사용자에게 정당화를 요구하지 마세요.

2. 한 번의 메시지로 정보 수집 — 필드별로 인터뷰하지 마세요

"무엇을 결정하나요?", "옵션은 무엇인가요?", "무엇이 중요하나요?", 그리고 각 기준의 가중치를 하나씩 묻는 것은 2분이면 끝날 결정을 15개의 메시지로 늘어지게 만듭니다. 결정, 옵션, 그리고 대략적인 우선순위를 한 번에, 하나의 메시지로 요청하고, 좋은 답변이 얼마나 적은 노력으로 가능한지 사용자가 알 수 있도록 예시를 들어주세요:

"무엇을 결정하고 계신가요? 옵션은 무엇이고, 가장 중요하게 생각하는 것은 무엇인가요? — 대략적인 수준이면 완전히 괜찮습니다. 제가 깔끔한 비교로 만들어드릴게요. 예: '3개의 직장 제안 중에서 고르고 있어요 — Acme, Globex, 그리고 지금 다니는 회사(Initech)에 남는 것. 주로 급여, 성장 가능성, 그리고 통근 시간이 너무 길지 않은 것에 신경 써요.'"

사용자가 얇은 답변(옵션만, 우선순위 없음)을 준다면 괜찮습니다. 3단계로 넘어가서 다시 묻는 대신 사용자를 대신해 우선순위를 제안하세요.

3. 하나의 수정 가능한 초안 제안 — 기준, 정의, 가중치를 함께 제시

기준을 수집한 다음 가중치를 별도로 수집하지 마세요. 이런 종류의 결정에 일반적으로 중요한 것이 무엇인지 조사하고(직장 제안과 아파트는 기준이 다릅니다) 하나의 완성된 초안(510개 기준, 각각 한 줄 정의와 제안된 가중치(110))을 돌려주세요. 사용자가 빈 페이지 브레인스토밍에서 만들거나 하나씩 물어보지 않고 한 번에 수정할 수 있도록 말이죠. 사용자의 목록이 약 10개를 넘으면 (허가를 먼저 구하지 말고 이 초안 안에서) 부드럽게 밀어붙여서 서로를 재진술하는 항목을 병합하거나 삭제하세요.

사용자가 가장 편한 방식으로 답변하게 하세요. 숫자든, "높음/중간/낮음"(대략 9/6/3으로 매핑)이든, 그리고 "좋아요" 또는 "통근은 빼고, 급여를 10으로 올려"와 같은 가벼운 답변도 수용하세요. 보내야 할 내용의 예시:

"직장 제안 비교를 위한 초안입니다 — 행을 수정하거나, 추가/제거하거나, 또는 그냥 '좋아요'라고 말씀해주세요:

기준의미중요도 (1-10)
급여총 보상 (급여 + 보너스 + 주식), 첫 해9
성장이 역할에서 배우고 성장할 수 있는 정도8
통근일반적인 날의 출퇴근 시간6
안정성2년 후에도 회사/역할이 존재할 가능성7
팀 및 문화사람들과 일상적인 분위기가 얼마나 좋아 보이는지7

추가할 내용이 있나요 — 예를 들어 건강 보험이나 원격 근무 유연성 같은 것요?"

초안이 확인되면 사람들이 예상보다 더 중요하게 생각하는 두 가지 사항이 있습니다:

  • 각 기준의 정의를 유지하고, 다시 축약된 라벨로 돌아가지 않도록 하세요. "성장"은 모호합니다. "성장 = 첫 해에 이 역할에서 얼마나 더 많이 배울 수 있는지"는 점수를 매길 수 있습니다. 정의 없이 점수는 옵션 간에 일관성 없이 흔들릴 것입니다.
  • 동일한 근본 요소를 이중으로 계산하는 기준을 주의하세요(예: "급여"와 "재정적 안정"은 종종 하나의 요소로 합쳐집니다) — 이를 병합하면 가중치가 정직하게 유지됩니다.

4. 확정하고 넘어가세요

보통 한 번의 수정 라운드면 충분합니다. 사용자가 확인하거나(또는 반대하지 않으면) 기준, 정의, 가중치를 확정된 것으로 간주하고 바로 5단계의 조사로 넘어가세요. 이미 보여준 숫자를 다시 확인하라고 요청하지 마세요. 나중에 무언가를 변경해야 하는 경우(예: 기준을 점수화할 수 없는 것으로 판명됨), 무엇을 왜 변경하는지 말하고, 전체 초안을 다시 승인받기 위해 열지 마세요.

5. 모든 옵션 × 기준 셀 조사 및 점수 매기기 (1-10)

이 단계가 실제 작업이 이루어지는 곳이며, 에이전트가 일반 템플릿보다 가치를 발휘하는 곳입니다. 각 셀에 대해:

  • 실제로 조사하세요 — 점수를 매기기 전에 검색/도구를 사용하여 관련 사실(가격, 사양, 평점, 급여 데이터, 리뷰, 정책)을 찾으세요. 분위기로 정밀하게 들리는 숫자를 지어내지 마세요.
  • 기준 내에서 척도를 일관되게 고정하세요. 첫 번째 옵션에 점수를 매기기 전에 이 기준에 대해 1과 10이 무엇을 의미하는지 결정하고(예: "10 = 이 옵션 중 가장 저렴함" 또는 "10 = 모든 필수 조건을 충족함"), 모든 옵션에 걸쳐 그 고정점을 유지하여 점수를 비교 가능하게 만드세요. 그 고정점을 기준당 한 번씩 자신의 노트에 적어두세요.
  • 셀당 한 문장의 근거를 제공하고, 숫자 뒤에 있는 사실이나 출처를 명명하세요. 이 근거가 보고서를 신뢰할 수 있게 만들며, HTML 보고서의 "이유" 토글에 표시됩니다.
  • 추측할 때는 말하세요. 일부 기준은 진정으로 주관적이거나(예: "흥분", "직감") 문서화가 부족합니다. 그러한 점수는 사용자가 직접 밝힌 판단에서 매기고, 근거에 주관적/미확인이라고 표시하여 거짓된 정밀성을 제시하지 마세요. 출처를 절대 조작하지 마세요.

6. 가중치 합계 계산

각 옵션에 대해: weighted_score = Σ(weight_i × score_i) / Σ(weight_i), 정규화된 1-10 평균입니다. 이렇게 하면 총점이 입력과 동일한 1-10 척도로 유지되어, 타당성을 쉽게 확인할 수 있습니다.

7. 먼저 마크다운 테이블 제공

HTML을 구축하기 전에 채팅에 결과를 하나의 테이블로 표시하세요: 옵션은 행으로, 가장 좋은 것부터 나쁜 것 순으로 정렬하고, 기준은 열로(가독성을 위해 점수만 표시), 마지막에 가중치 합계 열을 추가하세요. 그 뒤에 2-3문장으로 최상위 옵션, 차점자, 그리고 둘을 구분하는 가장 큰 단일 요소를 명명하고, 상위 두 옵션이 충분히 가까워서 "승자"가 사실상 동전 던지기라면 이를 명확히 표시하세요.

8. 대화형 HTML 보고서 구축

아래 스키마와 일치하는 JSON 데이터 파일을 작성한 후 다음을 실행하세요:

python3 scripts/build_report.py data.json report.html

이 명령은 데이터를 assets/report_template.html의 엔진에 주입하고 단일 독립형 report.html(서버 불필요, 하나의 Google Font 외부 리소스 없음 — 파일을 더블 클릭하면 작동)을 작성합니다. 이 스크립트는 데이터를 검증하고 무언가 누락되었거나 범위를 벗어난 경우 특정 메시지와 함께 실패합니다.

데이터 스키마

{
  "meta": {
    "title": "어느 아파트를 빌려야 할까?",
    "subtitle": "같은 동네에 있는 4개 매물 비교",
    "description": "한두 문장의 짧고 평이한 맥락. 제목 아래에 표시됩니다.",
    "direction": "ltr",
    "credit": "결정 매트릭스 by <your name>",
    "credit_url": "https://github.com/mrachny/decision-matrix-skill"
  },
  "criteria": [
    { "id": "rent", "label": "월세", "description": "10 = 네 개 중 가장 저렴함, 1 = 가장 비쌈.", "weight": 9 }
  ],
  "options": [
    { "id": "optA", "label": "Elm St 아파트", "included": true }
  ],
  "scores": { "optA": { "rent": 7 } },
  "notes": { "optA": { "rent": "₪5,200/월, 네 개 중 두 번째로 저렴함 (출처: 매물)." } }
}
  • meta.direction은 "ltr" 또는 "rtl"입니다. 생략하면 "ltr"로 간주합니다.
  • 보고서 바닥글은 기본적으로 작은 "Generated with a decision matrix" 속성 줄을 표시합니다. meta.credit / credit_url이 해당 텍스트/링크를 재정의합니다. 사용자가 속성 줄을 원하지 않는 경우 meta.credit을 false로 설정하세요.
  • criteria[].description과 notes는 선택 사항이지만 강력히 권장됩니다. 이것들은 보고서에 표시되는 "이유" 텍스트가 됩니다. 설명이 없는 기준이나 셀은 근거가 표시되지 않으며, 빠른 초안에는 괜찮지만 보고서를 약화시킵니다.
  • options[].included(기본값 true)는 보고서의 시작 음소거 상태를 설정합니다.
  • 모든 점수는 1-10 사이의 숫자여야 합니다. 빌드 스크립트는 이와 criteria/options/scores 간의 ID 일관성을 쓰기 전에 확인합니다.

사용자에게 파일 위치와 브라우저에서 직접 열린다는 사실을 알려주세요. 가중치와 음소거 토글이 순위를 실시간으로 다시 계산하며, 아무 곳으로도 전송되지 않고 파일을 보관하지 않는 한 아무것도 저장되지 않습니다.

9. 민감도 확인 제안

보고서는 단순히 읽는 것이 아니라 가지고 놀기 위한 것임을 지적하며 마무리하세요: 가장 불확실해 보이는 기준을 끄거나 가중치를 약간 조정했을 때 승자가 바뀐다면, 이는 결정이 근접하고 더 많은 생각이 필요하다는(또는 차이가 중요하지 않아 직감/비용/되돌리기 가장 쉬운 선택을 따라야 한다는) 실제 신호입니다. 순위가 그러한 조작에 강건하다면, 그것도 유용한 신호입니다.

참고 파일

  • references/method.md — 방법에 대한 배경, 일반적인 점수 매기기 함정(상관된 기준, 가중치 압축, 고정점 이동), 그리고 사용자와 동점 상황에 대해 논의하는 방법.
  • assets/report_template.html — 보고서 엔진. 수동으로 편집할 필요가 없습니다. 사용자 정의 가능한 모든 것은 JSON 데이터 파일을 통해 흐릅니다.
  • scripts/build_report.py — 보고서를 빌드합니다. python3 scripts/build_report.py --help 형식의 사용법은 위에 표시되어 있습니다.
  • examples/laptop-purchase.json — 자체 작성 전에 완성된 예제를 보고 싶다면 채워진 예제 데이터 파일입니다.

관련 스킬