Green Claude: Claude Code의 디지털 절약을 위한 가이드
🇫🇷 프랑스어 버전 보기
Licenses
Release
Site
Green Claude는 에코 디자인 규칙과 로컬 감사 도구를 사용하여 리소스를 적게 사용하는 코드를 작성하도록 Claude Code를 돕습니다.
Institut du Numérique Responsable의 프로젝트입니다: 107가지 일반 규칙, 24개 언어 및 프레임워크에 대한 127가지 규칙, 그리고 16가지 책임 있는 사용 관행을 포함합니다. 이 접근 방식은 INR 웹사이트(프랑스어): 코드 지원 도우미를 이용한 에코 디자인에서 제시됩니다.
이 기능은 모델 로드 시 가이드 역할을 하며, 모든 응답에 적용됨을 보장하지는 않습니다. 이 감사 도구는 RGESN 준수 여부를 인증하거나 에너지 절감량을 측정하지 않고 검토 대상 후보를 표시합니다. 선택적 후크(Optional hooks)가 지원되는 코드 작성 작업 후에 감사를 실행합니다.
이 규칙들은 RGESN 2024, GR491, Green Software Foundation 및 W3C Web Sustainability Guidelines에 기반을 두고 있습니다. 다른 도우미에도 포팅 가능한 버전이 regles-ecoconception-ia에서 개발되고 있습니다.
설치 · 사용법 · 언어 및 프레임워크 · 제한 사항 및 후크 · 기여하기 · 라이선스
설치
Claude Code 플러그인 관리자를 통한 방법 (권장)
/plugin marketplace add Institut-du-Numerique-Responsable/green-claude
/plugin install green-claude@green-claude
Claude Code는 수동 git pull 없이 업데이트를 처리합니다 (/plugin update green-claude).
install.sh을 통한 방법
git clone https://github.com/Institut-du-Numerique-Responsable/green-claude.git
cd green-claude
./install.sh
스크립트는 해당 스킬을 ~/.claude/skills/green-claude에 설치하며, 감사(audit), 캐시(cache), 프레이밍(framing) 후크를 개별적으로 제공합니다. 플러그인 매니저는 이 후크들을 구성하지 않습니다.
사전 요구 사항: jq가 필요하며, 이는 감사 스크립트와 후크에서 사용됩니다 (brew install jq / sudo apt install jq).
Claude.ai 및 Claude API
로컬 클론(local clone)에서 아카이브를 빌드합니다:
bash skills/green-claude/scripts/package-skill.sh
| 채널 | 아카이브 | 설치 방법 |
|---|
| Claude.ai | dist/green-claude-claude-ai.zip | 설정 → 기능(Capabilities) → 스킬(Skills) → 스킬 업로드 (코드 실행 활성화 필수) |
| Claude API | dist/green-claude-api.zip | client.beta.skills.create(files=files_from_dir("green-claude")) |
이 아카이브들은 각 채널에 맞춰 설명이 조정된 동일한 스킬을 포함하고 있습니다. 감사를 실행하려면 실행 환경에 bash와 jq가 필요합니다.
사용법
사용하는 세 가지 방법:
| ~를 원한다면... | 무엇을 할 것인가 |
|---|
| Claude가 기본적으로 간결한 코드(sober code)를 작성하도록 하고 싶다 | 스킬을 설치하고 필요할 때 명시적으로 사용을 요청합니다 |
| ... | |
| 감사는 로컬 패턴 및 감지기를 사용하여, 모델 호출 없이 작동합니다. 그 결과를 Claude로 해석하는 것은 토큰을 소모합니다. | |
실제 예시
완전히 평범한 이 코드 조각:
import _ from 'lodash';
app.get('/api/users', (req, res) => {
...
bash skills/green-claude/scripts/eco-audit.sh api.js (출력 발췌):
[High] ECO-FRONT-01 — 사소한 필요에 무거운 라이브러리 사용 금지
파일 : api.js
카테고리 : 6. 프론트엔드
...
이 스킬은 Claude가 코드를 작성할 때 이러한 패턴을 피하는 데 도움을 줄 수 있으며, 감사 기능을 사용하여 결과를 확인할 수 있습니다.
규칙: 9 RGESN 2024 패밀리와 연계된 107개 규칙
skills/green-claude/rules/ecoconception.json는 RGESN 2024의 모든 9개 계열(families) (78개의 공식 기준)과 새로운 "AI 호스팅" 카테고리를 다룹니다. 모든 규칙은 RGESN 참조(rgesn_ref)와 GR491 계열(gr491_famille)을 가지고 있습니다.
현재 참조의 정확도는 다음과 같습니다: 38개 규칙은 특정 기준(예: 4.8)을 가리키고, 67개 규칙은 해당 매핑이 아직 완료되지 않았기 때문에 계열(1.x부터 9.x)만 가리킵니다. 또한 두 개의 규칙은 RGESN 대신 Green Software Foundation을 따릅니다. 이 계열 수준의 참조를 개선하는 것은 진행 중인 작업이며, 이 분야는 아는 것만을 진술할 뿐 더 이상은 아닙니다.
| RGESN 계열 | 규칙 수 | 예시 |
|---|
| 1. 전략 (Strategy) | 9 | 최적화 전 측정, 합리적인 데이터 수집, 개방형 형식, 지속 가능성 옹호, 인식 교육, 사용자 투명성 |
| ... | | |
감지 가능한 패턴(프로세스, 거버넌스)이 없는 규칙은 감사에서 건너뛰어지고 /green-claude 내의 체크리스트 역할을 합니다.
언어별 규칙: 온디맨드(on demand)로 로드되는 127개 규칙
위에 언급된 107개 규칙은 어떤 언어에도 적용됩니다. 이들은 목표를 설정할 뿐, Python이나 Java에서 어떻게 도달해야 하는지는 명시하지 않습니다: "N+1 쿼리 방지"는 select_related, JOIN FETCH, Include, 그리고 with() 중 무엇을 선택하는지를 결정하지 않습니다.
skills/green-claude/rules/langages/는 한 단계 더 깊이 들어가며, 언어별로 하나의 파일이 존재하고, 해당 언어의 파일에만 적용됩니다:
24개 언어 및 프레임워크의 예시가 있습니다. 전체 목록 및 상세 규칙을 참조하세요.
| File | Files covered | Rules | What it catches on its own |
|---|
python.json | **/*.py | 11 | Django/SQLAlchemy N+1, iterrows(), unbounded lru_cache(), requests.get without a session |
| ... | | | |
Without this filtering by extension, one language's patterns fire on the others: .all(), save() and += exist everywhere and don't point at the same problem. The audit only loads the file for the languages actually present among its arguments. | | | |
bash skills/green-claude/scripts/eco-audit.sh --list-langs
bash skills/green-claude/scripts/eco-audit.sh --list-rules python
bash skills/green-claude/scripts/eco-audit.sh --rules src/App.tsx
가정하지 말고 측정하세요 (Measure, don't assume)
eco-score.sh는 리포지토리에서 발견된 패턴의 개수를 세고, 영향력에 따라 가중치를 부여하며, 코드 볼륨 대비 보고합니다:
skills/green-claude/scripts/eco-score.sh
skills/green-claude/scripts/eco-score.sh --json
이 점수는 줄(joules)이 아니라 알려진 패턴의 개수를 셉니다. 밀도 하락은 코드가 인식 가능한 패턴을 적게 포함한다는 것을 의미할 뿐, 전력을 덜 소모한다는 것을 의미하지는 않습니다. 따라서 0과 비교하기보다는 지난달과 비교하고, 실제 실행 시간 측정(쿼리 수, 전송된 바이트, CPU 시간, 페이지의 EcoIndex)과 비교해야 합니다. 그것이 확실한 기준입니다.
감사(audit)가 실패하면 명령어는 오류와 함께 종료되며 점수를 생성하지 않습니다. 훅(Hooks)과 점수는 규칙 카탈로그에서 지원하는 확장자를 가져옵니다. 자동 선택은 Markdown과 JSON을 제외합니다.
추가로 두 가지 체크포인트가 있으며, 둘 다 선택 사항입니다:
hooks/green-claude-pre-commit.sh는 작업 디렉터리(working copy)가 다르더라도 스테이징된 콘텐츠를 감사(audit)합니다. Claude Code 훅은 Claude가 작성한 내용만 볼 수 있는 반면, 이 훅은 사용자가 작성한 내용까지도 볼 수 있습니다. GREEN_CLAUDE_STRICT=1을 전달하지 않는 한 차단하지 않고 보고합니다.
.github/workflows/eco-audit.yml는 모든 PR에서 규칙 테스트 스위트(rule test suite)를 실행하고, 작업 요약(job summary)에 리포지토리의 밀도(density)를 게시합니다.
Claude Code의 책임감 있는 사용 관행 (Responsible-use practices)
AI와 함께 코딩하는 것도 세션 동안 자원을 사용합니다. 따라서 Green Claude는 불필요한 컨텍스트, 출력, 재시도 및 컴퓨팅을 피하기 위한 자체 권장 사항을 유지합니다. 토큰 카운트(Token counts)는 활동 지표일 뿐이며 에너지나 배출량에 대한 직접적인 측정치가 아닙니다. 환경적 주장은 실제 실행 컨텍스트에서의 측정을 필요로 합니다.
skills/green-claude/rules/usage.json에는 16개의 프로젝트 작성 권장 사항이 포함되어 있으며, 이 중 두 가지는 검증된 오픈 소스 도구와 함께 예시가 제공됩니다:
인용된 제3자 도구(graphify, caveman)는 검증된 예시적 사례입니다 (오픈 소스, MIT 라이선스). 이 프로젝트는 해당 도구를 감사하거나 의존하지 않습니다.
제한 사항 및 훅 (Limits and hooks)
스킬은 이미 시작된 세션 동안 실행되며, 모델이 이를 적용할지 결정합니다. 따라서 시작 모델을 지정할 수 없고, 호출이 나가는 것을 가로채거나(intercept), 규칙이 매번 체크된다는 것을 보장할 수 없습니다. 그러므로 네 가지 레버(levers)는 스킬 외부에, hooks/에 위치하며, 선택 사항이며 설치 시점에 제공됩니다:
- 체계적 감사 (Systematic audit) (
hooks/green-claude-audit.sh): Write|Edit|MultiEdit에 연결되어 사용됩니다. Claude Code는 코드가 작성될 때마다 이 스크립트를 실행하며, 모델에게 묻지 않습니다. 방금 추가된 내용을 감사하고 그 결과를 Claude에게 검토 및 가능한 수정용으로 반환합니다.
- 명시적 로컬 캐시 (Explicit local cache) (
hooks/green-claude-cache.sh): 독립적인 사실 질문 앞에 [cache] 를 붙입니다. 예: [cache] 프랑스의 수도는 무엇인가요?. 이 요청들만 모델을 호출하지 않고 한 시간 동안 응답을 재사용할 수 있습니다. 일반 요청은 항상 Claude에 도달합니다. 코드 감사, 액션 또는 파일이나 이전 메시지에 의존하는 질문에는 이 접두사를 사용하지 마십시오: 캐시는 그러한 변경 사항을 추적하지 않습니다. 캐시 적중(cache hit) 시 훅 메시지로 표시되며 Claude의 대화 컨텍스트에는 추가되지 않습니다.
- 비피크 시간 경고 (Off-peak warning) (동일 훅): 차단하는 일 없이 피크 시간대(UTC 기준 22:00~06:00 외)를 알려줍니다.
- 작성 전 프레이밍 (Framing before writing) (
hooks/green-claude-brief.sh): UserPromptSubmit으로 연결됩니다. 코드를 생성하라는 요청이 있을 때, 무엇을 작성할지 결정하는 세 가지 규칙—문제를 해결하는 최소한의 코드, 요청과 모델에 도전하기, 구축하기 전에 질문하기—을 상기시킵니다. 질문에는 조용히 있습니다. 이 규칙들은 스킬에도 존재하며, 훅은 요청이 이루어질 때 이를 반복합니다.
말해서는 안 될 것을 침묵시키는 두 개의 파일
한 번 무시했던 후보가 다음 실행과 그 다음 실행에 다시 나타나고, 또다시 나타납니다. 여섯 번 무시당하면, 이는 팀 전체에게 감사 과정을 건너뛰도록 가르치게 되며, 이 비용은 규칙이 절약했던 것보다 더 큽니다. 두 개의 버전 관리 파일이 저장소 루트에서 질문을 종결합니다.
.green-claude/decisions.md에는 팀이 결정한 내용이 담겨 있습니다:
ECO-CONT-01 docs/index.html ACCEPTED logo.jpg kept as the og:image fallback
ECO-SH-05 install.sh TODO two mktemp with no trap
`ACCEPTED`는 해당 파일에 한해 그 규칙을 무시하며, 오직 그곳에서만 그렇습니다. TODO는 여전히 보이게 유지됩니다: 의도적으로 부채를 지는 것은 면제 사항이 아닙니다. 감사 보고서는 숨겨진 발견 항목의 수와 해당 파일의 위치를 기록하므로, 아무것도 흔적 없이 사라지지 않습니다. 나머지 파일은 자유로운 산문이며, 올바른 형태의 줄만 읽힙니다.
.green-claude/ignore는 파일을 범위에서 제외하며, 한 줄에 하나의 패턴을 지정합니다:
skills/green-claude/scripts/test-eco-audit.sh
skills/green-claude/rules/
테스트 스위트와 규칙 코퍼스는 실제로 실행하지 않고도 결함이 있는 코드를 포함합니다. 이를 플래그 지정하는 것은 구조적으로 오탐(false positive)이며, 이 리포지토리가 작성되는 동안 다른 어떤 것보다 더 많은 노이즈를 발생시켰습니다.
두 위치 모두 GREEN_CLAUDE_DECISIONS 및 GREEN_CLAUDE_IGNORE로 덮어쓸 수 있습니다.
이 후크들은 ~/.claude/settings.json에 연결됩니다.