유지보수자 운영 매뉴얼(낮은 부담)
Maintainer / Triager / Founder를 위한 문서입니다. 규칙과 자동화로 반복 업무를 줄이고, Founder의 집중력을 영향이 큰 변경과 릴리스에 쓰도록 합니다.
1. 설계 원칙
| 원칙 | 방식 |
|---|---|
| 공개 우선 | 사용 관련 질문 → Discussions; 추적 가능한 결함 → Issue |
| 자동화 우선 | CI, Labeler, Dependabot, Stale이 반복 업무 처리 |
| 영역별 자율성 | docs/user-guide/**, 단일 테마 디렉터리 PR은 문서/테마 유지보수자가 병합 |
| 게이트키핑 집중 | Founder는 주로 CODEOWNERS 경로(lib/db, next.config.js, package.json 등)를 리뷰 |
2. 매주 약 15분(Maintainer)
- Discussions를 훑습니다:
조직 구성원 신청, 답변 없는 “사용 Q&A”. - Dependabot PR을 확인합니다(patch/dev 의존성은 일괄 병합 가능).
- 병합 대기열:
documentation/good first issue이고 CI가 모두 통과한 PR을 우선합니다. - 릴리스 기간에만
package.json버전과 changelog를 처리합니다.
문서 유지보수자에게 권한을 부여했다면, Founder는 3단계의 순수 문서 PR을 건너뛸 수 있습니다.
3. Issue / Discussion 분류
| 사용자 요청 | 처리 | 관리자 소요 |
|---|---|---|
| “배포/설정 방법” | Discussions로 돌리고 Issue를 닫거나 링크 안내 | 댓글 1개 |
| 중복 Issue | duplicate로 닫고 기존 항목 링크 | 댓글 1개 |
| 버전/환경 정보 부족 | bug 템플릿을 안내해 보완 요청, needs-info 표시 | 댓글 1개 |
| 장기 미응답 | Stale bot에 맡김(45+14일) | 0 |
| 보안 취약점 | Private Advisory로 전환하고 공개 논의 금지 | SECURITY.md 기준 |
4. PR 병합 권한(권장)
| PR 유형 | 라벨/경로 | 병합 담당 | CI 요구사항 |
|---|---|---|---|
| 순수 문서 | documentation, docs/** | Write 권한 유지보수자 누구나 | docs-site job |
| 단일 테마 | theme, themes/<name>/** | 테마 유지보수자 또는 Write | lint + test |
| 의존성 봇 | dependencies | 유지보수자가 일괄 처리 | CI 통과 |
| 핵심 / 설정 | core, config, CODEOWNERS | Founder 또는 2인 리뷰 | 모든 job |
금지: CI 없이 병합, Contributor가 자신의 PR을 직접 병합(유지보수자가 명시적으로 권한을 준 경우 제외).
5. 자동화 개요
| 도구 | 역할 |
|---|---|
| ci.yml | PR: lint, type-check, test, lockfile, 문서 빌드 |
| labeler.yml | 경로에 따라 documentation / theme / core 등 라벨 부여 |
| dependabot.yml | 매주 의존성 PR 생성(기본적으로 major 제외) |
| stale.yml | 45일 비활동 시 stale 표시, 14일 뒤 Issue 닫기 |
| deploy-docs-site.yml | main 문서 자동 게시 |
| CODEOWNERS | 영향 큰 경로에만 @Founder 지정 |
6. Org Admin 일회성 설정(규칙 준수 + 부담 절감)
GOVERNANCE.zh-CN.md를 바탕으로 다음을 권장합니다.
- [ ] Require status checks:
Lint & type-check,Unit tests,Lockfile consistency(문서 PR에는VitePress build추가 가능) - [ ]
main진입 시 Require PR(Founder도 PR 사용, 긴급 hotfix는 예외로 하고 공지) - [ ] Allow auto-merge(선택): CI가 통과했고
docs/**만 수정한 PR에만 활성화 - [ ] Secret scanning + Dependabot alerts 활성화
- [ ] 저장소 라벨을 labeler.yml과 일치:
documentation,theme,core,config,dependencies,stale,needs-info,good first issue,help wanted - [ ] Issue 템플릿이 Founder에게 기본 assign되지 않게 함(
assignees제거 완료)
7. 릴리스(저빈도)
mainCI가 통과했는지 확인합니다.docs/user-guide/changelog/latest.md를 갱신합니다.- Org Admin이 tag / Release를 만들거나
bump-version-on-main을 실행합니다(유지보수자 전용). - Discussion에 공지 하나만 올리면 됩니다.
