decision-logger

star 0

중요한 의사결정을 자동으로 DECISION_LOG.md에 기록

h2techjun By h2techjun schedule Updated 3/2/2026

name: Decision Logger description: 중요한 의사결정을 자동으로 DECISION_LOG.md에 기록 version: 1.0.0 scope: project-specific

📝 Decision Logger Skill

목적

프로젝트의 중요한 의사결정을 자동으로 감지하고 기록하여 미래의 문맥 이해를 돕습니다.

작동 방식

Decision 감지 패턴

다음 상황에서 자동으로 로깅:

1. 기술 스택 변경

// 감지 키워드
const TECH_CHANGES = [
  '도입', '제거', '업그레이드', '마이그레이션',
  '~로 변경', '~에서 ~로', '라이브러리 추가'
]

// 예시
"Gemini 2.0 Flash로 업그레이드"
→ 자동 로깅

2. 아키텍처 결정

const ARCHITECTURE_DECISIONS = [
  'DB 스키마', '테이블 추가', 'API 엔드포인트',
  'monorepo', '폴더 구조', '모듈 분리'
]

// 예시
"사용자 테이블에 tier 컬럼 추가"
→ 자동 로깅

3. 보안 정책

const SECURITY_DECISIONS = [
  'RLS 정책', '인증 방식', 'API 키 회전',
  '접근 제어', '권한 관리'
]

// 예시
"관리자 페이지에 수동 세션 복구 로직 추가"
→ 자동 로깅

4. 비즈니스 로직

const BUSINESS_DECISIONS = [
  '가격 정책', '플랜 변경', '기능 제한',
  '사용량 제한', '쿼터'
]

// 예시
"Free 플랜 월 10회로 제한"
→ 자동 로깅

5. 성능 최적화

const PERFORMANCE_DECISIONS = [
  '캐싱', '인덱스 추가', '쿼리 최적화',
  '레이지 로딩', 'CDN'
]

// 예시
"번역 결과를 Redis에 캐싱"
→ 자동 로깅

로그 포맷

## 2026-02-07

### 🔧 기술 스택

- **결정**: Gemini 2.0 Flash 도입
- **이유**: Long Context 지원으로 대용량 문서 처리 가능
- **영향**: 번역 품질 20% 향상, 비용 30% 절감
- **담당**: @Architect, @The-Nerd

### 🛡️ 보안

- **결정**: 관리자 API에 수동 세션 복구 적용
- **이유**: 미들웨어 의존성 제거, 무결성 보장
- **파일**: `app/api/admin/*/route.ts`
- **담당**: @The-Guardian

### 💰 비즈니스

- **결정**: Guest 등급 신설 (이메일 없는 사용자)
- **이유**: 무명 사용자 관리 및 전환 추적
- **영향**: 전환율 측정 가능, 마케팅 최적화
- **담당**: @Growth-Hacker, @Architect

자동 실행 조건

Trigger 1: 파일 변경 감지

// DB 스키마 파일 변경 시
if (changedFile.includes("supabase/migrations")) {
  logDecision({
    category: "Database",
    file: changedFile,
    description: extractCommitMessage(),
  });
}

Trigger 2: 환경 변수 추가

// .env.example 변경 시
if (changedFile === ".env.example") {
  logDecision({
    category: "Configuration",
    description: "새 환경 변수 추가",
    variables: extractNewVariables(),
  });
}

Trigger 3: 사용자 명시적 요청

// 사용자가 "이 결정 기록해줘" 요청 시
if (userRequest.includes("기록")) {
  await manualLog();
}

구현 예시

Python 스크립트 (자동화)

#!/usr/bin/env python3
"""
Decision Logger - 자동 의사결정 기록
"""

import os
import re
from datetime import datetime
from pathlib import Path

DECISION_LOG = Path('.agent/memory/DECISION_LOG.md')

PATTERNS = {
    'tech': r'(도입|제거|업그레이드|마이그레이션)',
    'db': r'(테이블|스키마|컬럼|인덱스)',
    'security': r'(RLS|인증|권한|보안)',
    'business': r'(가격|플랜|제한|쿼터)'
}

def detect_decision(commit_message: str) -> dict:
    """커밋 메시지에서 의사결정 추출"""
    for category, pattern in PATTERNS.items():
        if re.search(pattern, commit_message):
            return {
                'category': category,
                'message': commit_message,
                'date': datetime.now().strftime('%Y-%m-%d')
            }
    return None

def log_decision(decision: dict):
    """DECISION_LOG.md에 기록"""
    with open(DECISION_LOG, 'a', encoding='utf-8') as f:
        f.write(f"\n## {decision['date']}\n\n")
        f.write(f"- {decision['message']}\n")

# Git hook 으로 실행
if __name__ == '__main__':
    import sys
    commit_msg = sys.argv[1]

    decision = detect_decision(commit_msg)
    if decision:
        log_decision(decision)
        print(f"✅ Decision logged: {decision['category']}")

Git Hook 설정

# .git/hooks/post-commit
#!/bin/sh
python .agent/skills/decision-logger/log_decision.py "$(git log -1 --pretty=%B)"

DECISION_LOG.md 구조

# 프로젝트 의사결정 로그

> 중요한 기술적/비즈니스적 결정 기록

## 2026-02-07

### 🔧 기술

- Gemini 2.0 Flash 도입 (Long Context 활용)
- pdf2json 파서로 변경 (28% 성능 향상)

### 🛡️ 보안

- 모든 관리자 API에 수동 세션 복구 적용

### 💰 비즈니스

- Guest 등급 신설 (무명 사용자 관리)

## 2026-02-01

### 🔧 기술

- Turborepo 도입 (빌드 70% 단축)

### 💰 비즈니스

- Team 플랜 가격 $29.99 확정

검색 및 활용

특정 날짜 검색

grep "2026-02" .agent/memory/DECISION_LOG.md

카테고리별 검색

grep "🔧 기술" .agent/memory/DECISION_LOG.md

전체 히스토리 조회

cat .agent/memory/DECISION_LOG.md

통합: JARVIS와 연동

// JARVIS가 중요한 변경 감지 시 자동 로깅
async function onMajorChange(change: Change) {
  if (shouldLog(change)) {
    await logDecision({
      date: new Date(),
      category: inferCategory(change),
      description: change.summary,
      files: change.files,
      agents: change.involvedAgents,
    });

    // 사용자에게 알림
    console.log("📝 의사결정이 자동으로 기록되었습니다.");
  }
}

월간 요약 자동 생성

def generate_monthly_summary(month: str):
    """월별 의사결정 요약"""
    decisions = parse_decision_log(month)

    summary = f"""
# {month} 의사결정 요약

## 주요 기술 변경
{format_list(decisions['tech'])}

## 보안 강화
{format_list(decisions['security'])}

## 비즈니스 전략
{format_list(decisions['business'])}

## 영향 분석
- 성능: {calculate_performance_impact(decisions)}
- 비용: {calculate_cost_impact(decisions)}
- 보안: {calculate_security_impact(decisions)}
    """

    return summary

실행 시점:

  • Git 커밋 시 자동 실행 (post-commit hook)
  • JARVIS가 주요 변경 감지 시 자동 실행
  • 사용자 명시적 요청 시 수동 실행
Install via CLI
npx skills add https://github.com/h2techjun/defense --skill decision-logger
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator