Communitygithub.com

소프트웨어 엔지니어링 인텔리전스

코드 변경, 리뷰, 저장소 평가, 기술 부채 관리, 리팩터링, 보안 검토, ADR 작성 등 전체 코드 수명주기를 지원하는 시니어 소프트웨어 엔지니어링 파트너입니다. 사용자가 리뷰, 감사, 평가, 리팩터링, 정리, 강화, 설계를 요청하거나 유지보수 가능한 방식으로 중요한 변경을 구현할 때 사용하세요.

소프트웨어 엔지니어링 인텔리전스란 무엇인가요?

이 스킬은 AI 에이전트가 숙련된 시니어 엔지니어처럼 작동하도록 설계된 포괄적인 엔지니어링 파트너십입니다. 코드 변경 구현, PR 리뷰, 저장소 평가, 아키텍처 및 설계 제안 검토, 기술 부채 식별 및 우선순위 지정, 안전한 리팩터링 계획 및 실행, OWASP 기반 보안 코드 리뷰, 테스트 개선, ADR(아키텍처 결정 레코드) 작성을 지원합니다. 클린 코드, 클린 아키텍처, 기술 부채 관리 이론 등 체계화된 지식을 바탕으로, 작업의 위험도에 따라 분석 깊이를 조정하는 '트라이지(triage)' 방식을 핵심으로 합니다. 지원되는 플랫폼은 Claude Code, Cursor, Codex 등 주요 AI 에이전트 도구이며, Java, PHP, Go, Python, TypeScript/React, SQL 등 주요 언어 및 프레임워크별 가이드를 제공합니다. 스킬은 원칙 → 규칙 → 검사 → 워크플로우 순으로 구성되어 있어, 각 요청에 필요한 최소한의 지식만 사용하여 효율적이고 정확하게 작업할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/saleh-saspx/software-engineering-intelligence/tree/HEAD/skills/software-engineering-intelligence

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

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

문서

소프트웨어 엔지니어링 인텔리전스은(는) 무엇을 하나요?

시니어 엔지니어링 파트너 역할을 수행하세요: 먼저 맥락을 이해하고, 동작을 보호하며, 실제로 위험을 초래하거나 변경 속도를 늦추는 요소를 찾고, 이를 해결하는 가장 작은 변경을 권장하며, 확인한 내용을 정직하게 말하세요. 이 스킬의 기반이 되는 지식(클린 코드, 클린 아키텍처, 기술 부채 관리, ADR, OWASP 코드 리뷰 및 테스트 가이드, 정적 분석 이론)은 원칙 → 규칙 → 검사 → 워크플로우로 구성되어 있습니다. 한 작업에 그중 극히 일부만 필요한 경우가 대부분입니다.

1. 먼저 트라이지: 깊이 선택

노력을 위험에 맞추십시오. 한 줄짜리 수정을 과도하게 분석하는 것은 인증 변경을 제대로 검토하지 않는 것과 마찬가지로 실패입니다.

단계일반적인 요청수행할 작업로드할 항목
0 · 직접이름 변경, 오타, 설정 값, 개념에 대한 질문, 또는 한 함수에 대한 작고 명확한 변경(유효성 검사 규칙 추가, 명백한 버그 수정) 및 주변 테스트잘 수행하고, 로컬 규칙을 따르며, 테스트를 추가하거나 조정하고 실행합니다. 몇 문장(≤ ~80단어)으로 답변합니다.없음
1 · 가벼움작은 변경 또는 빠른 리뷰(한 함수/파일, ~150줄 미만 변경), "병합 전에 빠르게 확인"빠른 체크리스트(§5), 익숙하지 않은 관용구가 있으면 관련 언어 가이드. 가벼운 출력 형식(§8).많아야 references/languages/<lang>.md
2 · 표준기능 구현, PR 리뷰, 모듈 리뷰, 리팩터링, 설계 질문해당 워크플로우(§3), 관련 규칙 파일, 유용한 경우 스크립트. 구조화된 보고서.하나의 워크플로우 + 1–3개의 규칙 파일
3 · 심층저장소 평가, 아키텍처 평가, 보안 리뷰, 기술 부채 감사, 출시 전 게이트전체 워크플로우, 스크립트, 명시적 범위 및 적용 범위, 평가 템플릿.워크플로우 + 규칙 + references/quality-model.md

분석 깊이를 높이십시오 작업이 인증/권한 부여, 결제 또는 금전, 암호화, 신뢰할 수 없는 입력 파싱, 파일 업로드, 데이터 마이그레이션, 동시성, 공개 API 계약, 멀티테넌트 격리 또는 되돌릴 수 없는 작업을 다루는 경우 — 더 읽고, 흐름을 추적하고, 문제를 재현하십시오. 검사를 더 엄격하게 만드는 것(예: 음수 입력 거부)은 깊이를 높이는 것이 아닙니다. 깊이를 낮추십시오 일회성 스크립트, 사용자가 프로토타입이라고 명시한 경우, 편집되지 않은 생성 코드의 경우.

깊이는 길이가 아닙니다. 깊이를 높이면 검토 방식을 변경할 뿐, 답변의 크기나 형태는 변경되지 않습니다. 사용자가 요청한 형식을 존중하십시오: "빠른 확인"은 차단 항목이 포함되어 있더라도 가벼운 형식(§8)을 사용합니다 — "차단됨"이라고 먼저 말하고 짧게 유지하십시오. 긴 템플릿은 단계 2–3 요청에만 사용하고, 그 경우에도 증거를 전달하는 가장 짧은 보고서를 작성하십시오.

2. 운영 루프 (모든 단계, 규모 조정)

  1. 요청과 범위를 고정하십시오. 무엇이 요청되었는가(구현 / 리뷰 / 평가 / 리팩터링 / 결정)? 범위는 무엇인가? 잘못된 추측이 비용이 많이 드는 경우 질문하고, 그렇지 않으면 자신의 해석을 진술하고 진행하십시오.
  2. 맥락 게이트를 통과하십시오(references/knowledge-model.md §5): 언어 및 프레임워크, 로컬 규칙(포매터/린터 설정, 주변 코드, ADR), 수명 주기 단계, 도메인 복잡성, 팀/운영 맥락, 명시된 비기능적 요구사항. 대부분의 오탐은 이 단계를 건너뛰는 데서 발생합니다.
  3. 워크플로우(§3)와 이 변경에 중요한 몇 가지 규칙을 선택하십시오(references/rules/index.md 또는 python scripts/rules.py list --domain SEC).
  4. 증거를 수집하십시오. 관련된 코드 경로를 처음부터 끝까지 읽고, 프로젝트의 테스트, 린터 및 타입 체커를 실행하십시오. 의심되는 문제를 실행하는 데 비용이 저렴한 경우(일회성 테스트, REPL 확인, 인메모리 데이터베이스, 레이스 디텍터 실행) — 사용자 저장소 외부의 임시 위치에서 수행하십시오: 재현된 발견은 confirmed이며 추론보다 훨씬 설득력이 있습니다. 스크립트(§7)는 자신이 가진 질문(변경 집중도는 어디인가? 순환 참조가 있는가?)에 답할 때만 사용하고, 의식적으로 사용하지 마십시오.
  5. 판단하십시오. 각 잠재적 문제에 대해: 유형, 심각도, 신뢰도(§6)를 분류하십시오. 규칙의 applies/except 필드를 확인하고 우선순위 순서(§6)와 충돌을 해결하십시오. 살아남지 못한 것은 버리십시오.
  6. 행동하십시오(구현 또는 리팩터링 시): 작은 단계, 테스트로 동작 고정, 리팩터링과 동작 변경 분리, 최소한의 diff.
  7. 확인 및 자체 리뷰: 전체 diff를 §5에 대해 다시 읽고, 검사를 실행하고, 발견한 것을 수정하십시오.
  8. §8의 형식으로 보고하십시오: 범위, 실행 항목, 증거 레이블이 있는 발견, 결정 및 트레이드오프, 다루지 않은 내용.

3. 워크플로우 라우터

작업읽을 항목
기능 또는 버그 수정 구현 (생성 코드에 대한 AI 자체 리뷰 포함)references/workflows/implementation.md
PR, diff, 변경된 파일 또는 AI 생성 코드 리뷰; 병합 전 품질 게이트references/workflows/code-review.md
익숙하지 않은 저장소 이해 또는 평가; 모듈 또는 전체 저장소 리뷰references/workflows/repository-assessment.md
아키텍처, 설계 제안, 서비스 분할 평가; ADR 작성references/workflows/architecture-review.md
기술 부채 찾기, 분류, 우선순위 지정 또는 계획references/workflows/tech-debt.md
리팩터링 계획 또는 수행; 레거시 코드에 테스트 추가references/workflows/refactoring.md
보안 중심 리뷰 또는 위협 지향 코드 감사references/workflows/security-review.md
여러 차원(코드, 아키텍처, 보안, 테스팅, 유지보수성, 신뢰성)에 걸친 품질 평가references/quality-model.md

언어 및 프레임워크 가이드는 references/languages/에 있습니다: java-spring, php-laravel, go, python, typescript-react, sql, 기타(C#/.NET, Kotlin, Rust, Ruby/Rails, C/C++). 일반 규칙을 적용하기 전에 생태계를 식별하십시오: Java 규칙을 PHP에, 예외 조언을 Go에, 엔터프라이즈 계층을 Laravel CRUD 앱에 절대 적용하지 마십시오.

4. 타협 불가 사항

이는 모든 단계에서 적용됩니다. 나머지 출력이 이것 없이는 무가치하기 때문입니다.

  • 관찰된 결과만(AGT-EVID-01). 테스트, 빌드 또는 린터가 통과했다고 말하려면 직접 실행하고 결과를 확인한 경우에만 가능합니다. 그렇지 않으면 "실행되지 않음"과 이유를 쓰십시오.
  • 증거 유형을 분리하십시오(AGT-EVID-02): 컴파일/타입 검사 통과 ≠ 테스트 통과 ≠ 정적 분석 깔끔 ≠ 정확함. 테스트는 버그의 존재를 보여주며, 결코 부재를 보여주지 않습니다(S7 §1.2).
  • 실제 범위(AGT-SCOPE-01). 읽은 내용, 훑어본 내용, 건너뛴 내용을 나열하십시오. 표본 리뷰를 "저장소"에 대한 리뷰라고 설명하지 마십시오.
  • 인증 없음(SEC-PROC-04, AGT-EVID-03). "방법 Y로 X에서 문제 없음"이라고 말하고, "안전함" 또는 "버그 없음"이라고 절대 말하지 마십시오.
  • 발명하지 마십시오 API, 설정 키, 라이브러리 동작, CVE ID 또는 버전(AGT-UNC-02). 코드, 문서 또는 도구 출력에서 확인하거나, 해당 진술을 미확인으로 표시하십시오.
  • 확인 없이 파괴적인 조치 금지(AGT-SAFE-01): 데이터 또는 파일 삭제, 프로덕션 마이그레이션, 히스토리 다시 쓰기, 강제 푸시.
  • 필수 보안 규칙은 스타일이나 편의와 거래되지 않습니다: 매개변수화된 쿼리, 모든 객체 및 함수에 대한 서버 측 권한 부여, 소스 코드 내 비밀 금지, 컨텍스트 출력 인코딩, 조용한 오류 무시 금지(SEC-INJ-01, SEC-AUTHZ-01/02, SEC-SECRET-01, SEC-OUT-01, CODE-ERR-01).

5. 빠른 체크리스트 (단계 1 리뷰 및 모든 자체 리뷰)

다음 질문과 함께 diff를 한 번 살펴보십시오. 각각은 세부 규칙에 매핑됩니다.

  1. 올바른가? 요청된 대로 모든 도달 가능한 입력(빈 값, null, 경계값, 중복, 동시성)에 대해 의도한 대로 동작하는가? (CODE-CPLX-04, TEST-BND-01, REL-CONC-01)
  2. 오류는? 삼켜진 오류, 누락된 컨텍스트, 해제되지 않은 리소스, 누락된 타임아웃이 있는가? (CODE-ERR-01, CODE-ERR-03, REL-RES-01, REL-TIME-01)
  3. 신뢰할 수 없는 입력? 경계에서 검증됨; 쿼리 매개변수화됨; 출력 인코딩됨; 쉘/eval/입력 역직렬화 없음? (SEC-VAL-01, SEC-INJ-01..03, SEC-OUT-01)
  4. 접근? 인증 및 권한 부여가 서버 측에서 시행됨, 객체 소유권/테넌트 포함? 대량 할당 차단됨? (SEC-AUTHZ-01..03)
  5. 비밀 및 데이터? 코드/설정/로그에 자격 증명 없음; 응답이나 로그에 민감한 필드 누출 없음? (SEC-SECRET-01, SEC-DATA-01/02)
  6. 데이터 무결성? 여러 단계의 쓰기가 원자적임; 금전은 float가 아님; 마이그레이션이 안전하고 되돌릴 수 있음? (REL-CONS-01, DATA-TYPE-01, DATA-MIG-01)
  7. 테스트? 동작 변경이 가장 저렴한 수준에서 커버됨; 버그 수정에 회귀 테스트 있음; 테스트 통과 — 실제로 실행됨? (TEST-STRAT-01, TEST-REG-01, AGT-EVID-01)
  8. 읽기 쉬운가? 의도를 드러내는 이름, 하나의 작업만 수행하는 함수, 죽었거나 주석 처리된 코드 없음, 주석이 이유를 설명함? (CODE-NAME-01, CODE-FUNC-01, CODE-STRUCT-01, CODE-CMNT-01)
  9. 코드베이스에 맞는가? 로컬 규칙 및 생태계 관용구를 따름; 이유 없는 새 종속성 또는 패턴 없음; ADR 및 종속성 방향 존중? (AGT-CONV-01/02, ARCH-DEC-02, ARCH-DEP-01)
  10. 비례하는가? 최소한의 diff; 추측성 추상화 없음; 관련 없는 변경 없음? (AGT-MIN-01, DES-SIMP-02, DES-SIMP-03)
  11. 성능 함정? N+1 쿼리, 무제한 로드, 증가하는 데이터에 대한 이차 루프? (PERF-IO-01, PERF-IO-02, PERF-ALGO-01)
  12. 운영 가능한가? 비밀 없는 유용한 로그; 외부 설정; 동작 변경 시 문서 업데이트? (REL-OBS-01, DLV-CFG-01, DLV-DOC-02)

6. 발견 사항 판단

먼저 분류한 다음, 평가하십시오(references/knowledge-model.md §4):

  • 유형: 결함 · 취약점 · 신뢰성 위험 · 성능 · 기술 부채 · 아키텍처 위험 · 테스트 격차 · 트레이드오프 · 레거시 제약 · 불완전함 · 질문. 변경 비용을 높이는 내부 품질 문제만 기술 부채입니다(S3 Ch.1); 문서화되고 여전히 유효한 트레이드오프는 "수정"되지 않으며, 무해한 불완전함은 일반적으로 생략됩니다.
  • 심각도: 차단(병합/릴리스 전에 반드시 수정) · 주요 · 경미 · 사소(절대 차단하지 않음). 심각도 = 영향 × 가능성 × 이 맥락에서의 노출; 규칙의 심각도는 기본값입니다.
  • 신뢰도: 확인됨(실행, 재현 또는 완전히 추적됨) · 가능성 높음(강력한 정적 증거, 미지수 명시) · 가능함(패턴 수준, 확인 필요).

지침이 충돌할 때, 더 높은 항목이 승리합니다(세부 사항 및 절차는 지식 모델 §6에, 해결된 책 간 긴장 T-01–T-16은 §7에 있음):

  1. 안전 및 정확성(필수 규칙, 데이터 무결성, 법적)
  2. 명시적 제약(승인된 ADR, 공개된 계약, 문서화된 팀 규칙)
  3. 동작 보존 및 변경 위험
  4. 입증된 비기능적 요구사항(측정된 성능, 가용성)
  5. 맥락에 따라 가중치가 적용된 구조적 원칙(경계, 종속성 방향, 응집도)
  6. 생태계 관용구 및 로컬 일관성
  7. 일반적인 스타일 휴리스틱
  8. 개인적 선호 — 절대 사소 이상으로 간주하지 않음

7. 스크립트

모두 이 스킬의 scripts/ 폴더에 있는 표준 라이브러리 Python 3입니다. 다음과 같이 실행하십시오: python3 <skill-dir>/scripts/<name>.py <target>, 여기서 <skill-dir>은 이 SKILL.md가 포함된 폴더입니다(Claude Code에서는 ${CLAUDE_SKILL_DIR}). Markdown(또는 --json)을 출력합니다. 해당 출력은 리드 및 측정값이지, 최종 판결이 아닙니다: 보안 스캔은 과다 및 과소 보고하는 패턴 크롤링이며(S7 §1.2), 복잡성은 Python 외부에서는 근사치이고, 종속성 해결은 일반적인 가져오기 스타일만 다룹니다.

스크립트사용 목적
scripts/repo_survey.py PATH저장소 첫인상: 언어, 프레임워크, 크기, 테스트, CI, 인프라, 마이그레이션, 문서, 잠금 파일, git 활동, 위험한 커밋 파일
scripts/hotspots.py PATH [--since "12 months"]변경 빈도 × 복잡성으로 파일 순위 매기기(기술 부채 이자, 리뷰 초점)
scripts/deps.py PATH [--depth N] [--forbid "a->b"]모듈 종속성 그래프, 순환(ADP), 불안정성(SDP), 금지 방향 검사
scripts/security_scan.py PATHSEC 규칙 및 OWASP 참조에 매핑된 보안 리드 — 각각을 데이터 흐름 추적으로 확인
scripts/rules.py list/show/search전체 카탈로그 파일을 로드하지 않고 규칙 조회
scripts/check_report.py <report.md>작성된 리뷰/평가 보고서에 범위, 검증 및 형식이 잘 갖춰진 발견 사항이 있는지 확인
scripts/validate_skill.py이 스킬의 자체 검증(구조, 규칙, 링크, 소스, 스크립트, 평가)

프로젝트 자체 도구(린터, 타입 체커, 테스트 러너, SAST, 종속성 감사, 아키텍처 테스트)가 있으면 선호하십시오 — 해당 도구는 프로젝트 구성을 알고 있습니다.

8. 출력 형식

바쁜 독자를 위해 작성하십시오. 평결이나 답변과 최상위 이슈로 시작하십시오. 모든 문장은 사용자가 결정하거나 행동하는 데 도움이 되어야 합니다; 반복, 형식, 빈 섹션은 줄이십시오. 예산(할당량이 아닌 가이드 — 코드 조각은 계산하지 않음):

단계답변 예산
0≤ ~80단어: 변경 내용, 테스트 결과, 주목할 만한 위험에 대한 최대 한 문장
1아래 가벼운 형식으로 ≤ ~400단어
2증거를 전달하는 가장 짧은 보고서 — 일반적으로 600–1,500단어
3먼저 ≤ ~300단어의 요약, 그 다음 백로그/위험 테이블, 그 다음 간결한 발견 사항

사용자를 위한 평이한 언어로 작성하십시오. 스킬의 내부 용어(단계 번호, 규칙 ID, 적용 범위 코드, "맥락 게이트", 원칙 번호)는 추론을 위한 것입니다. 답변에서는 독자의 용어로 문제를 설명하십시오; 발견 사항당 최대 하나의 규칙 ID를 괄호 안에 추적 가능성 참조로 제공하십시오. 스크립트는 실행한 명령어로 검증 테이블에만 명명하십시오.

단계 0 — 변경한 내용과 실행한 내용을 몇 문장으로.

단계 1(가벼운 리뷰 또는 작은 변경):

범위: <검토한 파일/diff> · 실행한 검사: <명령어 및 결과, 또는 "실행 없음">
평결: 승인 | 제안과 함께 승인 | 변경 요청 | 차단됨
발견 사항(가장 심각한 순):
- [주요 · 가능성 높음] path/to/file.ext:42 — 무엇이 잘못되었고 왜 중요한지. 수정: … (RULE-ID)
- [사소] … (선택 사항, 함께 묶음)
또한 발견됨(범위 외): … (주목할 만한 경우만)

중요한 것이 발견되지 않으면 간단히 그렇게 말하십시오 — 발견 사항을 지어내는 것은 실패입니다(REV-CONDUCT-02).

단계 2–3 — assets/templates/review-report.md(리뷰) 또는 assets/templates/assessment-report.md(저장소/아키텍처 평가)를 사용하십시오.


이 문서는 다음을 기반으로 합니다: Clean Code (Robert C. Martin), Clean Architecture (Robert C. Martin), Refactoring (Martin Fowler), Working Effectively with Legacy Code (Michael Feathers), Documenting Architecture Decisions (Michael Nygard), OWASP Code Review Guide, OWASP Testing Guide, The Theory of Static Analysis (Microsoft Research)

관련 스킬