> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub 프로젝트에 기여하기

> 채팅에서 저장소를 가져오고, 작은 변경을 요청하고, 미리보기에서 확인한 다음, Agent가 풀 리퀘스트를 열도록 합니다.

export const Connectors = ({items}) => <div style={{
  margin: "8px 0 20px"
}}>
    <style>{`
      .connectors-list, .connectors-list * { margin-top: 0 !important; margin-bottom: 0 !important; }
      .connectors-row {
        display: flex !important;
        align-items: flex-start !important;
        gap: 10px !important;
        padding: 4px 0 !important;
        min-height: 0 !important;
        height: auto !important;
      }
      .connectors-row img {
        width: 20px !important;
        height: 20px !important;
        max-width: 20px !important;
        max-height: 20px !important;
        margin: 2px 0 0 !important;
        display: block !important;
      }
    `}</style>
    <div className="connectors-list">
      {items.map((item, i) => <div key={item.id} className="connectors-row" style={{
  borderTop: i === 0 ? "none" : "1px solid rgba(130,130,130,0.22)"
}}>
          <img src={`/images/connectors/${item.id}.svg`} alt="" width={20} height={20} />
          <div style={{
  minWidth: 0
}}>
            <div>
              <strong>{item.name}</strong>
              {item.why ? <span style={{
  opacity: 0.72
}}> · {item.why}</span> : null}
            </div>
            {item.auth === "api-key" ? <div style={{
  fontSize: "11.5px",
  lineHeight: 1.35,
  color: "#F26207",
  marginTop: "2px"
}}>
                Not a native connector. Agent will ask for your API key.
              </div> : null}
          </div>
        </div>)}
    </div>
  </div>;

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block max-w-full overflow-x-hidden font-sans !whitespace-pre-wrap !break-words" style={{
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
      <div className="pr-7" style={{
    whiteSpace: "pre-wrap",
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
        {children}
      </div>
    </CodeBlock>;
};

쓰기 권한이 있는 저장소에 채팅에서 바로 작은 변경을 만들어 보세요. 프롬프트 상자에서
저장소를 가져오고, 일상적인 언어로 변경을 요청하고, 라이브 미리보기에서 확인하세요.
결과가 괜찮아 보이면 Agent가 브랜치에 커밋하고 푸시한 뒤, 설명을 채운 풀 리퀘스트를
엽니다.

## 다음과 같은 경우에 적합합니다

* 로컬 환경을 설정하지 않고 변경 사항을 배포하고 싶은 개발자.
* 오타 수정이나 문구 수정 같은 작은 변경이 필요하지만, 개발자의 작업을 방해하고 싶지 않은 비개발자.

## 커넥터

<Connectors
  items={[
{
  id: "github",
  name: "GitHub",
  why: "가져오는 저장소, 푸시하는 브랜치, 그리고 풀 리퀘스트",
},
]}
/>

## 시작하기 전에

범위가 명확한 작은 변경 하나를 고르고, 프로젝트에 기여 가이드가 있다면 확인하세요.
Agent가 브랜치를 직접 푸시하고 거기서 풀 리퀘스트를 열기 때문에 저장소에 대한 쓰기 권한이
필요합니다.

프롬프트 상자에서 **플러스** 메뉴를 열고 **Import an existing project**를 선택한 다음
**GitHub**를 선택하고 저장소 URL을 붙여넣으세요. 저장소 링크를 프롬프트 상자에 직접
붙여넣어도 됩니다.

## Agent에게 요청하기

<AiPrompt>
  이것은 GitHub에서 가져온 \[저장소 링크]입니다. 홈 페이지의 H1을 \[현재 텍스트]에서
  \[새 텍스트]로 바꿔 주세요. 프로젝트의 기존 스타일과 문구 규칙은 유지하고, 다른
  것은 건드리지 말고, 페이지가 실행되는 미리보기를 보여 주세요.
</AiPrompt>

## 예상 결과

<Steps>
  <Step title="Agent가 프로젝트를 설정합니다">
    저장소를 읽고, 의존성을 설치하고, 누락된 환경 변수처럼 스스로 추론할 수 없는 것은
    물어봅니다.
  </Step>

  <Step title="올바른 파일을 찾습니다">
    일치하는 문자열만 찾는 것이 아니라, 편집하기 전에 무엇을 바꿀 계획인지 알려줍니다.
  </Step>

  <Step title="변경을 적용하고 미리보기를 엽니다">
    그래서 diff가 아니라 실제 페이지를 볼 수 있습니다.
  </Step>

  <Step title="풀 리퀘스트를 요청합니다">
    미리보기가 올바르게 보이면 같은 채팅에서 요청하세요. 변경 사항을 저장하고 풀
    리퀘스트로 팀에 보내므로, 라이브로 반영되기 전에 누군가 검토할 수 있습니다. 먼저
    GitHub 연결이 여전히 활성 상태인지 확인하세요.

    <AiPrompt>
      이 변경을 커밋하고 검토용 풀 리퀘스트를 열어 주세요. 명확한 제목을 붙이고,
      무엇이 바뀌었고 어떻게 확인했는지를 바탕으로 설명을 작성해 주세요.
    </AiPrompt>
  </Step>
</Steps>

무엇이 바뀌었고, 왜 바뀌었고, 어떻게 확인했는지가 채워진 풀 리퀘스트가 저장소에 만들어집니다.
나가기 전에 diff를 직접 검토하세요. 리뷰어는 범위가 퍼진 변경에 반대하므로, 관련 없는
내용은 별도의 풀 리퀘스트로 분리해야 합니다.

## 나에게 맞게 조정하기

<AiPrompt>
  커밋하기 전에 프로젝트의 린터와 테스트 스위트를 실행하고 실패하는 항목을 보여
  주세요. diff가 건드리는 모든 파일을 나열하고 \[변경]과 관련 없는 것은 표시해 주세요.
</AiPrompt>

<AiPrompt>
  리뷰어가 이런 리뷰 코멘트 \[붙여넣기]를 남겼습니다. 사실에 관한 수정은 적용하고,
  동의하지 않는 것은 이유와 함께 알려준 다음, 같은 브랜치에 푸시해 주세요.
</AiPrompt>

## 문제 해결

<AccordionGroup>
  <Accordion title="미리보기가 시작되지 않습니다">
    프로젝트에 실행 명령이나 환경 변수가 필요합니다. Agent에게 기여 가이드와 예시 env
    파일을 읽고 정확히 무엇이 빠졌는지 알려 달라고 요청하세요.
  </Accordion>

  <Accordion title="푸시가 거부됩니다">
    저장소에 대한 쓰기 권한이 있는지, GitHub 연결이 여전히 활성 상태인지 확인하세요.
    일부 조직은 브랜치 이름을 제한하거나 서명된 커밋을 요구하기도 합니다. Agent에게 정확한
    오류를 보여 달라고 요청하세요.
  </Accordion>

  <Accordion title="리뷰어가 변경을 요청합니다">
    같은 브랜치에 커밋하고 다시 푸시하세요. 풀 리퀘스트는 자동으로 업데이트되므로 두
    번째 풀 리퀘스트를 열지 마세요.
  </Accordion>
</AccordionGroup>

## 관련 문서

<CardGroup cols={2}>
  <Card title="릴리스 노트 생성하기" href="/ko/use-cases/generate-release-notes">
    병합된 풀 리퀘스트를 사람들이 읽을 수 있는 노트로 바꿔보세요.
  </Card>

  <Card title="앱 미리보기" href="/ko/features/editor/preview">
    풀 리퀘스트를 열기 전에 변경 사항이 실제로 실행되는 모습을 확인하세요.
  </Card>
</CardGroup>
