From 0785b93036d50b4c721e119f9ccc4046def17c27 Mon Sep 17 00:00:00 2001 From: pureliture Date: Tue, 26 May 2026 20:56:21 +0900 Subject: [PATCH 1/2] Install collaboration capture skill Co-Authored-By: Codex GPT-5 --- .../capture-collaboration-idea/SKILL.md | 144 ++++++++++++++++++ .../capture-collaboration-idea/SKILL.md | 144 ++++++++++++++++++ .github/ISSUE_TEMPLATE/collaboration_idea.yml | 47 ++++++ .github/ISSUE_TEMPLATE/config.yml | 1 + .gitignore | 4 +- 5 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 .agents/skills/capture-collaboration-idea/SKILL.md create mode 100644 .claude/skills/capture-collaboration-idea/SKILL.md create mode 100644 .github/ISSUE_TEMPLATE/collaboration_idea.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.agents/skills/capture-collaboration-idea/SKILL.md b/.agents/skills/capture-collaboration-idea/SKILL.md new file mode 100644 index 0000000..fd9256b --- /dev/null +++ b/.agents/skills/capture-collaboration-idea/SKILL.md @@ -0,0 +1,144 @@ +--- +name: capture-collaboration-idea +description: Capture a collaboration idea as a public-safe GitHub issue draft for Codex; require explicit user approval before issue creation. +--- + +# Capture Collaboration Idea + +대화 중 나온 협력 방안, 프로젝트 개선, 아이디에이션을 public-safe GitHub issue draft로 정리할 때 사용한다. + +## 범위 + +- GitHub issue draft를 만든다. +- 사용자가 명시적으로 승인하기 전에는 GitHub issue를 생성하지 않는다. +- target repository에 이미 존재하는 issue form `.github/ISSUE_TEMPLATE/collaboration_idea.yml`을 기준으로 작성한다. +- public repository에 공개해도 되는 정보만 남긴다. + +## Public Repo Guardrails + +- private repository 이름, 내부 host, secret, token, credential, customer data, private vulnerability detail을 issue draft에 넣지 않는다. +- 내부 경로, 미공개 branch, 비공개 운영 절차는 공개 가능한 일반 설명으로 바꾼다. +- 재현 단계, 영향, 제안 내용은 public-safe 수준으로 축약한다. +- 공개 가능 여부가 애매한 내용은 issue draft에 넣지 말고 `Review Metadata`에 risk로 표시한 뒤 사용자 확인을 요청한다. +- 보안 취약점, credential, exploit detail, private incident 정보가 포함되면 즉시 중단하고 public issue 생성 대신 private disclosure나 비공개 triage를 제안한다. + +## Issue Form Contract + +target repository에는 다음 issue form이 있어야 한다. + +- `.github/ISSUE_TEMPLATE/collaboration_idea.yml` + +`Proposal Type`은 아래 세 값 중 하나만 사용한다. + +- `협력 방안 제안` +- `프로젝트 개선 제안` +- `아이디에이션` + +## Label Contract + +`Proposal Type` 값과 GitHub label은 같은 문자열로 매핑한다. + +- `협력 방안 제안` -> `협력 방안 제안` +- `프로젝트 개선 제안` -> `프로젝트 개선 제안` +- `아이디에이션` -> `아이디에이션` + +label이 target repository에 없으면 issue를 만들기 전에 중단하고 label 준비 또는 label 없이 draft 유지 중 하나를 사용자에게 물어본다. + +## Workflow + +1. 대화에서 협력 아이디어를 추출한다. +2. 아이디어를 `Proposal Type` 세 값 중 하나로 분류한다. +3. target repository에서 중복 issue를 검색한다. +4. draft 내용을 public-safe 형태로 다시 쓴다. +5. 생성 전 preview를 보여준다. +6. 사용자에게 명시적 승인을 받는다. +7. 승인 후에만 GitHub issue를 생성한다. + +## Duplicate Search + +중복 검색은 issue 생성 전 검토 자료다. GitHub issue body에는 넣지 않는다. + +- query에는 핵심 키워드, Proposal Type, 관련 기능명을 포함한다. +- result에는 중복 후보 issue 번호와 판단을 짧게 적는다. +- 중복 가능성이 높으면 issue 생성을 중단하고 기존 issue에 comment를 달지, 새 issue를 만들지 사용자에게 묻는다. + +## Preview Format + +preview는 반드시 `Review Metadata`와 `Issue Draft`를 분리한다. + +```markdown +## Review Metadata + +- Proposal Type: <협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> +- Label: +- Public Safety: +- Duplicate Search: + - Query: + - Result: +- Approval Needed: yes + +## Issue Draft + +### Title + + +### Proposal Type +<협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> + +### Summary + + +### Context + + +### Proposed Collaboration or Change + + +### Expected Benefit + + +### Notes + +``` + +`Duplicate Search`는 `Review Metadata`에만 둔다. `Issue Draft` 안에는 넣지 않는다. + +## Approval Gate + +preview 뒤에는 한 문장으로 승인 여부를 묻는다. + +예: + +```text +이 draft로 GitHub issue를 생성해도 될까요? 승인하면 생성하고, 수정할 점이 있으면 반영하겠습니다. +``` + +아래처럼 명확한 승인 표현이 있을 때만 issue를 생성한다. + +- "승인" +- "생성해" +- "이대로 issue 만들어" +- "create it" + +수정 요청, 조건부 승인, 침묵, 애매한 답변은 승인으로 보지 않는다. + +## Stop Conditions + +- target repository가 public repo인지 확인할 수 없다. +- `.github/ISSUE_TEMPLATE/collaboration_idea.yml` 존재를 확인할 수 없다. +- `Proposal Type`을 세 값 중 하나로 분류할 수 없다. +- public-safe rewrite 후에도 비공개 정보나 민감 정보가 남아 있다. +- 중복 issue 가능성이 높고 사용자가 새 issue 생성을 재승인하지 않았다. +- 필요한 label이 없고 사용자가 처리 방식을 승인하지 않았다. +- 사용자가 issue 생성을 명시적으로 승인하지 않았다. +- GitHub 인증, 권한, 네트워크 상태 때문에 issue 생성 결과를 확인할 수 없다. + +중단 시에는 issue를 만들지 않고 이유와 다음 선택지만 한국어로 짧게 말한다. + +## Korean Output Style + +- 한국어로 응답한다. +- GitHub field name, file path, label, `Proposal Type` 값은 원문 그대로 쓴다. +- preview 전에는 긴 배경 설명을 쓰지 않는다. +- 생성 완료를 말할 때는 issue URL이나 issue 번호를 함께 제시한다. +- 생성하지 않았으면 "생성하지 않음"을 명확히 말한다. diff --git a/.claude/skills/capture-collaboration-idea/SKILL.md b/.claude/skills/capture-collaboration-idea/SKILL.md new file mode 100644 index 0000000..e838591 --- /dev/null +++ b/.claude/skills/capture-collaboration-idea/SKILL.md @@ -0,0 +1,144 @@ +--- +name: capture-collaboration-idea +description: Capture a collaboration idea as a public-safe GitHub issue draft for Claude Code; require explicit user approval before issue creation. +--- + +# Capture Collaboration Idea + +대화 중 나온 협력 방안, 프로젝트 개선, 아이디에이션을 public-safe GitHub issue draft로 정리할 때 사용한다. + +## 범위 + +- GitHub issue draft를 만든다. +- 사용자가 명시적으로 승인하기 전에는 GitHub issue를 생성하지 않는다. +- target repository에 이미 존재하는 issue form `.github/ISSUE_TEMPLATE/collaboration_idea.yml`을 기준으로 작성한다. +- public repository에 공개해도 되는 정보만 남긴다. + +## Public Repo Guardrails + +- private repository 이름, 내부 host, secret, token, credential, customer data, private vulnerability detail을 issue draft에 넣지 않는다. +- 내부 경로, 미공개 branch, 비공개 운영 절차는 공개 가능한 일반 설명으로 바꾼다. +- 재현 단계, 영향, 제안 내용은 public-safe 수준으로 축약한다. +- 공개 가능 여부가 애매한 내용은 issue draft에 넣지 말고 `Review Metadata`에 risk로 표시한 뒤 사용자 확인을 요청한다. +- 보안 취약점, credential, exploit detail, private incident 정보가 포함되면 즉시 중단하고 public issue 생성 대신 private disclosure나 비공개 triage를 제안한다. + +## Issue Form Contract + +target repository에는 다음 issue form이 있어야 한다. + +- `.github/ISSUE_TEMPLATE/collaboration_idea.yml` + +`Proposal Type`은 아래 세 값 중 하나만 사용한다. + +- `협력 방안 제안` +- `프로젝트 개선 제안` +- `아이디에이션` + +## Label Contract + +`Proposal Type` 값과 GitHub label은 같은 문자열로 매핑한다. + +- `협력 방안 제안` -> `협력 방안 제안` +- `프로젝트 개선 제안` -> `프로젝트 개선 제안` +- `아이디에이션` -> `아이디에이션` + +label이 target repository에 없으면 issue를 만들기 전에 중단하고 label 준비 또는 label 없이 draft 유지 중 하나를 사용자에게 물어본다. + +## Workflow + +1. 대화에서 협력 아이디어를 추출한다. +2. 아이디어를 `Proposal Type` 세 값 중 하나로 분류한다. +3. target repository에서 중복 issue를 검색한다. +4. draft 내용을 public-safe 형태로 다시 쓴다. +5. 생성 전 preview를 보여준다. +6. 사용자에게 명시적 승인을 받는다. +7. 승인 후에만 GitHub issue를 생성한다. + +## Duplicate Search + +중복 검색은 issue 생성 전 검토 자료다. GitHub issue body에는 넣지 않는다. + +- query에는 핵심 키워드, Proposal Type, 관련 기능명을 포함한다. +- result에는 중복 후보 issue 번호와 판단을 짧게 적는다. +- 중복 가능성이 높으면 issue 생성을 중단하고 기존 issue에 comment를 달지, 새 issue를 만들지 사용자에게 묻는다. + +## Preview Format + +preview는 반드시 `Review Metadata`와 `Issue Draft`를 분리한다. + +```markdown +## Review Metadata + +- Proposal Type: <협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> +- Label: +- Public Safety: +- Duplicate Search: + - Query: + - Result: +- Approval Needed: yes + +## Issue Draft + +### Title + + +### Proposal Type +<협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> + +### Summary + + +### Context + + +### Proposed Collaboration or Change + + +### Expected Benefit + + +### Notes + +``` + +`Duplicate Search`는 `Review Metadata`에만 둔다. `Issue Draft` 안에는 넣지 않는다. + +## Approval Gate + +preview 뒤에는 한 문장으로 승인 여부를 묻는다. + +예: + +```text +이 draft로 GitHub issue를 생성해도 될까요? 승인하면 생성하고, 수정할 점이 있으면 반영하겠습니다. +``` + +아래처럼 명확한 승인 표현이 있을 때만 issue를 생성한다. + +- "승인" +- "생성해" +- "이대로 issue 만들어" +- "create it" + +수정 요청, 조건부 승인, 침묵, 애매한 답변은 승인으로 보지 않는다. + +## Stop Conditions + +- target repository가 public repo인지 확인할 수 없다. +- `.github/ISSUE_TEMPLATE/collaboration_idea.yml` 존재를 확인할 수 없다. +- `Proposal Type`을 세 값 중 하나로 분류할 수 없다. +- public-safe rewrite 후에도 비공개 정보나 민감 정보가 남아 있다. +- 중복 issue 가능성이 높고 사용자가 새 issue 생성을 재승인하지 않았다. +- 필요한 label이 없고 사용자가 처리 방식을 승인하지 않았다. +- 사용자가 issue 생성을 명시적으로 승인하지 않았다. +- GitHub 인증, 권한, 네트워크 상태 때문에 issue 생성 결과를 확인할 수 없다. + +중단 시에는 issue를 만들지 않고 이유와 다음 선택지만 한국어로 짧게 말한다. + +## Korean Output Style + +- 한국어로 응답한다. +- GitHub field name, file path, label, `Proposal Type` 값은 원문 그대로 쓴다. +- preview 전에는 긴 배경 설명을 쓰지 않는다. +- 생성 완료를 말할 때는 issue URL이나 issue 번호를 함께 제시한다. +- 생성하지 않았으면 "생성하지 않음"을 명확히 말한다. diff --git a/.github/ISSUE_TEMPLATE/collaboration_idea.yml b/.github/ISSUE_TEMPLATE/collaboration_idea.yml new file mode 100644 index 0000000..dc1c212 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/collaboration_idea.yml @@ -0,0 +1,47 @@ +name: Collaboration Idea +description: 협력 방안, 프로젝트 개선, 아이디에이션 제안 +title: "[Proposal] " +body: + - type: dropdown + id: proposal_type + attributes: + label: Proposal Type + description: 이 제안의 성격을 하나만 선택합니다. + options: + - 협력 방안 제안 + - 프로젝트 개선 제안 + - 아이디에이션 + validations: + required: true + + - type: textarea + id: context + attributes: + label: Context + description: 왜 이 내용을 논의해야 하는지, 누구에게 영향이 있는지 적습니다. + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposal + description: 제안 내용 또는 같이 정해야 할 방향을 적습니다. + validations: + required: true + + - type: textarea + id: done_next_decision + attributes: + label: Done / Next Decision + description: 이 issue가 닫히려면 무엇이 결정되거나 실행되어야 하는지 적습니다. + validations: + required: true + + - type: checkboxes + id: public_safety + attributes: + label: Public Safety + options: + - label: 이 issue에는 real secret, private finding, internal repo/host/path가 없습니다. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.gitignore b/.gitignore index ca31020..16558ed 100644 --- a/.gitignore +++ b/.gitignore @@ -68,7 +68,9 @@ build/ *.swp # Local agent/harness settings -.claude/ +.claude/* +!.claude/skills/ +!.claude/skills/** .routine-harness/ # Local git worktrees From 1699e3a48579201b4259a0a32536b0654a7b64db Mon Sep 17 00:00:00 2001 From: pureliture Date: Tue, 26 May 2026 21:10:29 +0900 Subject: [PATCH 2/2] Align collaboration skill preview with issue form Co-Authored-By: Codex GPT-5 --- .../skills/capture-collaboration-idea/SKILL.md | 15 ++++++--------- .../skills/capture-collaboration-idea/SKILL.md | 15 ++++++--------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/.agents/skills/capture-collaboration-idea/SKILL.md b/.agents/skills/capture-collaboration-idea/SKILL.md index fd9256b..10e50a3 100644 --- a/.agents/skills/capture-collaboration-idea/SKILL.md +++ b/.agents/skills/capture-collaboration-idea/SKILL.md @@ -85,20 +85,17 @@ preview는 반드시 `Review Metadata`와 `Issue Draft`를 분리한다. ### Proposal Type <협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> -### Summary - - ### Context -### Proposed Collaboration or Change - +### Proposal + -### Expected Benefit - +### Done / Next Decision + -### Notes - +### Public Safety +- [x] 이 issue에는 real secret, private finding, internal repo/host/path가 없습니다. ``` `Duplicate Search`는 `Review Metadata`에만 둔다. `Issue Draft` 안에는 넣지 않는다. diff --git a/.claude/skills/capture-collaboration-idea/SKILL.md b/.claude/skills/capture-collaboration-idea/SKILL.md index e838591..bdbf3ae 100644 --- a/.claude/skills/capture-collaboration-idea/SKILL.md +++ b/.claude/skills/capture-collaboration-idea/SKILL.md @@ -85,20 +85,17 @@ preview는 반드시 `Review Metadata`와 `Issue Draft`를 분리한다. ### Proposal Type <협력 방안 제안 | 프로젝트 개선 제안 | 아이디에이션> -### Summary - - ### Context -### Proposed Collaboration or Change - +### Proposal + -### Expected Benefit - +### Done / Next Decision + -### Notes - +### Public Safety +- [x] 이 issue에는 real secret, private finding, internal repo/host/path가 없습니다. ``` `Duplicate Search`는 `Review Metadata`에만 둔다. `Issue Draft` 안에는 넣지 않는다.