[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70FWC5RG54XKW1BCRZEVFR1":3,"skill-same:01M70FWC5RG54XKW1BCRZEVFR1":57},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M70FWC5RG54XKW1BCRZEVFR1","incidents-to-agent",null,"반복 실패 패턴을 분석해 새 에이전트 후보를 생성한다","JayJihyunKim\u002Frein","JayJihyunKim","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9338574?v=4","01M70FV3CW5XEZGG6GS341V6J6","flyingcat4","01M70FV3DSX4YES0CN14AFJT2T",1,"MIT","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fincidents-to-agent\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26],"incidents to agent","incidents","rule","2026-11-10 10:12:30",false,"---\nname: incidents-to-agent\ndescription: 반복 실패 패턴을 분석해 새 에이전트 후보를 생성한다\ntriggers:\n  - \u002Fincidents-to-rule 스킬이 Step 6 에서 체인 호출 (자동)\n  - 수동: \"최근 incidents 에서 새 agent 필요성 판단해줘\"\n---\n\n# Skill: incidents-to-agent\n\n## 목적\nrule 로 해결 불가한 반복 실패 패턴을 분석해 전문 에이전트 후보를 생성한다.\n\n## 새 에이전트 감지 기준 (3가지 모두 충족 시만)\n1. 동일 작업 유형 기존 에이전트 self-review 실패 **3회 이상**\n2. 작업 유형이 **한 문장으로 설명 가능**하고 기존 에이전트와 명확히 구분\n3. 기존 에이전트 + 하위 AGENTS.md 조합으로 해결 **불가능**\n\n## 입력\n- `trail\u002Fincidents\u002Fauto-*.md` (status in {pending, processed}, count >= 3, `agent_eligible != false`)\n- 기존 `trail\u002Fagent-candidates\u002F\u003Chash>.md` (decision 확인용)\n\n## 실행 절차\n\n### Step 1: 후보 식별\n각 auto-*.md 를 순회:\n- `count >= 3` 체크\n- frontmatter `agent_eligible` 확인:\n  - `false` → **에이전트 후보에서 제외** (bug\u002Fartifact — hook 소스 수정 등 다른 경로로 해결)\n  - `true` 또는 `unknown` 또는 필드 없음 → 통과 (기존 동작 유지)\n- 기존 candidate `\u003Cpattern_hash>.md` 존재? → decision != pending 이면 skip\n- 남은 건을 후보 리스트에 추가\n\n> **왜 이 필터인가**: `count >= 3` 만 보면 hook 소스의 regex false-positive 같은 버그성 패턴도 agent 후보로 올라와 사용자가 매번 decline 해야 한다. `agent_eligible: false` 는 `\u002Fincidents-to-rule` 분석 단계에서 기록되며, 여기서 필터링한다. 기존 incident 파일 (필드 없음) 은 `unknown` 으로 해석되어 기존 동작을 깨지 않는다 (backfill 불요).\n\ncandidate stub 생성:\n```bash\n# plugin root 해소 (Claude Bash 도구 환경에서는 ${CLAUDE_PLUGIN_ROOT} 가 unset)\nREIN_PLUGIN_ROOT=\"$(claude plugin path rein-core 2>\u002Fdev\u002Fnull || echo \"$HOME\u002F.claude\u002Fplugins\u002Fmarketplaces\u002Frein\u002Fplugins\u002Frein-core\")\"\n\npython3 \"$REIN_PLUGIN_ROOT\u002Fscripts\u002Frein-mark-agent-candidate.py\" create \\\n  --hash \u003Cpattern_hash> \\\n  --source-incident \u003Cauto-*.md 파일명> \\\n  --role-one-liner \"\u003C추정 역할 한 문장>\"\n```\n\n> Helper path 는 plugin install 환경에서 plugin root 의 `scripts\u002F` (위 resolver block 의 `$REIN_PLUGIN_ROOT` 결과 기준), 메인테이너 dogfood (plugin root env unset) 에서는 `scripts\u002Frein-mark-agent-candidate.py` 로 fallback (RES-1 resolver 가 동일 파일 가리킴).\n\n### Step 2: Batch 사용자 결정\n\n후보가 1건 이상이면 한 번의 AskUserQuestion (multiSelect) 호출:\n- 질문: \"agent 후보로 승격할 건을 선택하세요 (미선택은 declined 처리)\"\n- 옵션: 후보별로 `\u003Chash> — \u003Crole_one_liner> (count=N)`\n- 후보 0건이면 이 단계 skip.\n\n### Step 3: 결정 반영\n\n각 후보에 대해:\n- 선택됨 → `decide` 서브커맨드로 `approved`\n- 선택 안 됨 → `decide` 서브커맨드로 `declined`\n\n```bash\n# plugin root 해소 (Claude Bash 도구 환경에서는 ${CLAUDE_PLUGIN_ROOT} 가 unset)\nREIN_PLUGIN_ROOT=\"$(claude plugin path rein-core 2>\u002Fdev\u002Fnull || echo \"$HOME\u002F.claude\u002Fplugins\u002Fmarketplaces\u002Frein\u002Fplugins\u002Frein-core\")\"\n\npython3 \"$REIN_PLUGIN_ROOT\u002Fscripts\u002Frein-mark-agent-candidate.py\" decide \\\n  --hash \u003Chash> --decision \u003Capproved|declined> \\\n  --reason \"\u003C사람이 제시한 이유>\"\n```\n\n### Step 4: 검증\n\napproved 후보가 있으면:\n- `trail\u002Findex.md` 에 \"agent-candidates 승격 대기\" 한 줄 추가\n- 사용자에게 \"다음 단계: `\u002Fpromote-agent \u003Chash>` 로 정식 에이전트 초안 작성\" 안내\n\n### Step 5: approved \u002F declined 파일 삭제 (정책)\n\n결정이 `approved` (agent 승격 대기) 또는 `declined` 로 종결된 `auto-*.md` 는 **삭제한다**:\n\n```bash\nrm trail\u002Fincidents\u002Fauto-\u003Chook>-\u003Chash>[-N].md\n```\n\n이유:\n- approved 건은 `trail\u002Fagent-candidates\u002F\u003Chash>.md` 가 스텁이자 source of truth. 원본 incident 파일은 중복\n- declined 건은 `blocks.jsonl` 에 해당 엔트리가 남아 있으면 aggregate 가 다음 세션에서 재생성하는 stale-surfacing 문제 발생. 파일 삭제가 가장 단순한 해소 수단\n\napproved 후보에 대해서는 `trail\u002Fagent-candidates\u002F\u003Chash>.md` 를 확인해 `decision: approved` + `source_incident` 가 기록돼 있는지 검증한 뒤 원본 삭제.\n\n## 재평가 (opt-in)\n\n기존 declined 후보를 다시 검토하려면 수동으로 해당 파일의 `decision` 을 `pending`\n으로 편집한 뒤 본 스킬 재실행.\n\n## 완료 기준\n```\n[ ] 식별된 후보 모두 candidate 파일 생성 (또는 skip)\n[ ] 후보 있으면 batch AskUserQuestion 호출 완료\n[ ] 각 후보의 decision 갱신 (approved\u002Fdeclined)\n[ ] approved 건은 index.md 에 반영\n[ ] approved\u002Fdeclined 로 종결된 auto-*.md 원본 삭제 (Step 5)\n```\n\n## 주의\n- 에이전트 수 증가 = 조정 비용 + 토큰 비용 + 충돌 위험\n- 불확실하면 에이전트 생성보다 규칙 추가 (\u002Fincidents-to-rule) 를 선택\n- 본 스킬은 사람의 최종 승인 없이 에이전트를 활성화하지 않는다 (`\u002Fpromote-agent` 전용)\n","# Skill: incidents-to-agent\n\n## 목적\nrule 로 해결 불가한 반복 실패 패턴을 분석해 전문 에이전트 후보를 생성한다.\n\n## 새 에이전트 감지 기준 (3가지 모두 충족 시만)\n1. 동일 작업 유형 기존 에이전트 self-review 실패 **3회 이상**\n2. 작업 유형이 **한 문장으로 설명 가능**하고 기존 에이전트와 명확히 구분\n3. 기존 에이전트 + 하위 AGENTS.md 조합으로 해결 **불가능**\n\n## 입력\n- `trail\u002Fincidents\u002Fauto-*.md` (status in {pending, processed}, count >= 3, `agent_eligible != false`)\n- 기존 `trail\u002Fagent-candidates\u002F\u003Chash>.md` (decision 확인용)\n\n## 실행 절차\n\n### Step 1: 후보 식별\n각 auto-*.md 를 순회:\n- `count >= 3` 체크\n- frontmatter `agent_eligible` 확인:\n  - `false` → **에이전트 후보에서 제외** (bug\u002Fartifact — hook 소스 수정 등 다른 경로로 해결)\n  - `true` 또는 `unknown` 또는 필드 없음 → 통과 (기존 동작 유지)\n- 기존 candidate `\u003Cpattern_hash>.md` 존재? → decision != pending 이면 skip\n- 남은 건을 후보 리스트에 추가\n\n> **왜 이 필터인가**: `count >= 3` 만 보면 hook 소스의 regex false-positive 같은 버그성 패턴도 agent 후보로 올라와 사용자가 매번 decline 해야 한다. `agent_eligible: false` 는 `\u002Fincidents-to-rule` 분석 단계에서 기록되며, 여기서 필터링한다. 기존 incident 파일 (필드 없음) 은 `unknown` 으로 해석되어 기존 동작을 깨지 않는다 (backfill 불요).\n\ncandidate stub 생성:\n```bash\n# plugin root 해소 (Claude Bash 도구 환경에서는 ${CLAUDE_PLUGIN_ROOT} 가 unset)\nREIN_PLUGIN_ROOT=\"$(claude plugin path rein-core 2>\u002Fdev\u002Fnull || echo \"$HOME\u002F.claude\u002Fplugins\u002Fmarketplaces\u002Frein\u002Fplugins\u002Frein-core\")\"\n\npython3 \"$REIN_PLUGIN_ROOT\u002Fscripts\u002Frein-mark-agent-candidate.py\" create \\\n  --hash \u003Cpattern_hash> \\\n  --source-incident \u003Cauto-*.md 파일명> \\\n  --role-one-liner \"\u003C추정 역할 한 문장>\"\n```\n\n> Helper path 는 plugin install 환경에서 plugin root 의 `scripts\u002F` (위 resolver block 의 `$REIN_PLUGIN_ROOT` 결과 기준), 메인테이너 dogfood (plugin root env unset) 에서는 `scripts\u002Frein-mark-agent-candidate.py` 로 fallback (RES-1 resolver 가 동일 파일 가리킴).\n\n### Step 2: Batch 사용자 결정\n\n후보가 1건 이상이면 한 번의 AskUserQuestion (multiSelect) 호출:\n- 질문: \"agent 후보로 승격할 건을 선택하세요 (미선택은 declined 처리)\"\n- 옵션: 후보별로 `\u003Chash> — \u003Crole_one_liner> (count=N)`\n- 후보 0건이면 이 단계 skip.\n\n### Step 3: 결정 반영\n\n각 후보에 대해:\n- 선택됨 → `decide` 서브커맨드로 `approved`\n- 선택 안 됨 → `decide` 서브커맨드로 `declined`\n\n```bash\n# plugin root 해소 (Claude Bash 도구 환경에서는 ${CLAUDE_PLUGIN_ROOT} 가 unset)\nREIN_PLUGIN_ROOT=\"$(claude plugin path rein-core 2>\u002Fdev\u002Fnull || echo \"$HOME\u002F.claude\u002Fplugins\u002Fmarketplaces\u002Frein\u002Fplugins\u002Frein-core\")\"\n\npython3 \"$REIN_PLUGIN_ROOT\u002Fscripts\u002Frein-mark-agent-candidate.py\" decide \\\n  --hash \u003Chash> --decision \u003Capproved|declined> \\\n  --reason \"\u003C사람이 제시한 이유>\"\n```\n\n### Step 4: 검증\n\napproved 후보가 있으면:\n- `trail\u002Findex.md` 에 \"agent-candidates 승격 대기\" 한 줄 추가\n- 사용자에게 \"다음 단계: `\u002Fpromote-agent \u003Chash>` 로 정식 에이전트 초안 작성\" 안내\n\n### Step 5: approved \u002F declined 파일 삭제 (정책)\n\n결정이 `approved` (agent 승격 대기) 또는 `declined` 로 종결된 `auto-*.md` 는 **삭제한다**:\n\n```bash\nrm trail\u002Fincidents\u002Fauto-\u003Chook>-\u003Chash>[-N].md\n```\n\n이유:\n- approved 건은 `trail\u002Fagent-candidates\u002F\u003Chash>.md` 가 스텁이자 source of truth. 원본 incident 파일은 중복\n- declined 건은 `blocks.jsonl` 에 해당 엔트리가 남아 있으면 aggregate 가 다음 세션에서 재생성하는 stale-surfacing 문제 발생. 파일 삭제가 가장 단순한 해소 수단\n\napproved 후보에 대해서는 `trail\u002Fagent-candidates\u002F\u003Chash>.md` 를 확인해 `decision: approved` + `source_incident` 가 기록돼 있는지 검증한 뒤 원본 삭제.\n\n## 재평가 (opt-in)\n\n기존 declined 후보를 다시 검토하려면 수동으로 해당 파일의 `decision` 을 `pending`\n으로 편집한 뒤 본 스킬 재실행.\n\n## 완료 기준\n```\n[ ] 식별된 후보 모두 candidate 파일 생성 (또는 skip)\n[ ] 후보 있으면 batch AskUserQuestion 호출 완료\n[ ] 각 후보의 decision 갱신 (approved\u002Fdeclined)\n[ ] approved 건은 index.md 에 반영\n[ ] approved\u002Fdeclined 로 종결된 auto-*.md 원본 삭제 (Step 5)\n```\n\n## 주의\n- 에이전트 수 증가 = 조정 비용 + 토큰 비용 + 충돌 위험\n- 불확실하면 에이전트 생성보다 규칙 추가 (\u002Fincidents-to-rule) 를 선택\n- 본 스킬은 사람의 최종 승인 없이 에이전트를 활성화하지 않는다 (`\u002Fpromote-agent` 전용)\n",{"name":5,"triggers":32,"description":7},[33,34],"\u002Fincidents-to-rule 스킬이 Step 6 에서 체인 호출 (자동)",{"수동":35},"최근 incidents 에서 새 agent 필요성 판단해줘","main","8e6e9ee16c5c7343c6f0db55f6c8b37d5ef6f1d0","plugins\u002Frein-core\u002Fskills\u002Fincidents-to-agent",0,"https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein","https:\u002F\u002Fgithub.com\u002FJayJihyunKim","2026-10-15 08:31:34",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add JayJihyunKim\u002Frein --skill incidents-to-agent",{"tool":49,"command":50},"bunx","bunx skills add JayJihyunKim\u002Frein --skill incidents-to-agent",{"tool":52,"command":53},"pnpm","pnpm dlx skills add JayJihyunKim\u002Frein --skill incidents-to-agent","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fincidents-to-agent\u002FSKILL.md",true,[],[58,67,78,88,100,107],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":64,"publishedAt":27},"01M70FX2WFS12FG002RNTCSXC7","sample-skill","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Frein-template-min\u002F.claude\u002Fskills\u002Fsample-skill\u002FSKILL.md",[63],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[65,66],"sample","sample skill",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":27},"01M70FX0BT6WSNZKFF60KTZ5H9","repo-audit","저장소 전체 상태 점검. 오래된 규칙, 누락 테스트, 비활성 에이전트, trail 일관성 확인.","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Frepo-audit\u002FSKILL.md",[],[74,75,76,77],"repo","repo audit","audit","trail",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":85,"publishedAt":27},"01M70FWXCWRZEJSDQGTNDEKF2G","promote-agent","에이전트 후보를 정식 에이전트로 승격. 사람 승인 이후에만 실행.","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fpromote-agent\u002FSKILL.md",[84],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[86,87,25],"promote agent","promote",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":27},"01M70FWTP0QPQN09VJR8DNKWZS","pr-review-fixer","PR 리뷰 코멘트를 읽고 수정 사항을 자동으로 적용한다","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fpr-review-fixer\u002FSKILL.md",[],[95,96,97,98,99],"pr","review","pr review","pr review fixer","fixer",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":27},"01M70FWR0TC5NDF12D9E5ETBAW","persona","페르소나 프리셋 선택·해제 + 질문-답변 커스텀 프리셋 생성. \"페르소나 골라줘\u002F만들어줘\u002F바꿔줘\u002F꺼줘\" 류 요청에서 호출.","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fpersona\u002FSKILL.md",[],[102],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":27},"01M70FWKFPNVC4M5ECZE1F0WS6","parallel-execute","활성 plan 의 `## 실행 전략`(depends_on\u002Fmode\u002Fscope v2) 을 읽어 의존 위상정렬로 웨이브를 유도하고, 각 웨이브의 독립 edit_only 태스크를 같은 작업 트리에서 서브에이전트로 병렬 실행, mutating·의존 태스크는 순차 실행한다. 부모(메인 세션)가 웨이브 단위로 검증·테스트·커밋. 호스트가 병렬 dispatch 불가 시 순차 fallback 으로 degrade.","https:\u002F\u002Fgithub.com\u002FJayJihyunKim\u002Frein\u002Fblob\u002Fmain\u002Fplugins\u002Frein-core\u002Fskills\u002Fparallel-execute\u002FSKILL.md",[],[114,115,116,117,118,119,120,121,122,123],"parallel","execute","parallel execute","edit","fallback","mode","dispatch","scope","plan","only"]