session-to-skill
v1.0.0진행 중인 대화에서 재사용 가능한 패턴을 찾아 제안하고, 선택된 것을 이 저장소 컨벤션에 맞는 스킬로 등록
설치
호출 이름/session-to-skill:session-to-skill
Session to Skill
지금 하고 있는 대화를 돌아보면서, 다시 쓸 만한 절차나 결과물 형식을 찾아 Claude Code 스킬로 등록해주는 스킬.
무엇을 만드나
- 현재 세션 내용을 근거로 한 스킬 후보 2~4개 (이름 + 재사용 근거 + 트리거 조건)
- AskUserQuestion으로 사용자가 고른 후보에 대해,
my-claude-skills컨벤션을 그대로 따르는SKILL.md/ (필요시)template.md/README.md my-claude-skills저장소에 등록 +~/.claude/skills/<name>심볼릭 링크로 실제 호출 가능하게 설치
왜 이렇게 설계했나
스킬이 될 만한 패턴은 대화가 끝나고 시간이 지나면 놓치기 쉽다. 방금 겪은 반복 작업, 방금 정리한 규칙이 제일 뚜렷하게 보일 때가 대화 도중이라, 그 순간을 놓치지 않고 구조화하는 게 목적이다. 후보를 사용자 승인 없이 바로 스킬로 만들지 않는 이유는 — 이 프로젝트에서만 통하는 특수한 내용이 일반화된 스킬인 것처럼 잘못 포장될 위험이 있어서다.
파일을 두 곳(저장소 + ~/.claude/skills/)에 복제하지 않고 심볼릭 링크로 연결하는 이유는, 나중에 스킬을 고칠 때 두 사본이 어긋나는 걸 막기 위함이다 — 저장소가 유일한 원본(source of truth)이다.
사용 흐름
- 세션 내용에서 재사용 가능한 패턴 스캔 (일회성/프로젝트 특수 내용은 제외)
- 후보 2~4개 초안 작성
- AskUserQuestion으로 제안, 사용자가 선택
- 선택된 것마다
my-claude-skills컨벤션대로 스킬 파일 작성 - 저장소에 등록 +
~/.claude/skills/에 심볼릭 링크 - 저장소 README 스킬 목록 갱신
main에 직접 커밋하지 않고 브랜치에서 커밋 — push는 요청받았을 때만- 정식 테스트를 거치지 않은 1차 초안이라는 점을 명시
자세한 절차는 SKILL.md에 있다.
파일 구성
session-to-skill/
SKILL.md # 에이전트가 실제로 읽는 절차 정의
README.md # 이 파일 — 사람이 읽는 설명
template.md가 없는 이유: 이 스킬의 결과물은 고정된 문서 한 장이 아니라 "다른 스킬의 파일 세트"라서, 템플릿화할 단일 출력 구조가 없다.
에이전트가 읽는 절차 — SKILL.md
설치하면 Claude가 실행 중에 참조하는 실제 문서다. 아래 내용이 그대로 동작을 결정한다.
Session to Skill
Overview
Looks back at the current conversation (already in context — never re-read a transcript file), finds procedures or output formats worth reusing, proposes them to the user, and turns whatever they pick into a properly-structured skill registered in my-claude-skills.
When to Use
- User explicitly asks to extract/create a skill from what just happened in this session
- Right after a multi-step workflow wraps up and it seems like it'll recur (offer it once, don't insist)
- NOT for a single one-off task with no repeat structure, and NOT for turning project-specific conventions into a skill — those belong in that project's instructions file, not a personal skill
Process
1. Scan the conversation for candidates. Look for: procedures repeated more than once, decisions/rules the user gave that took several messages to pin down, output structures likely to be asked for again. Apply the bar from superpowers:writing-skills's "When to Create a Skill" — not intuitively obvious, reusable across projects, not project-specific.
2. Draft 2-4 candidates. For each: a name, one sentence on the reusable pattern, and a rough trigger description. Discard anything that's really just this-project detail wearing a skill's clothes.
3. Propose via AskUserQuestion. Multi-select — the user may want more than one, or none of the above (they can always type something else via "Other").
4. Build each selected skill. Follow the my-claude-skills repo convention exactly (see its top-level README.md "스킬 구조" section): SKILL.md (required), template.md (only if output shape must be fixed), README.md (required, human-facing).
5. Register it.
- Write the canonical folder into the
my-claude-skillsrepo (/Users/kimjaehyeon/Desktop/1_개발프로젝트/skills/<skill-name>/) - Symlink it into
~/.claude/skills/<skill-name>so it's actually invocable —ln -s <repo-path>/<skill-name> ~/.claude/skills/<skill-name>. If a same-named entry already exists there, stop and tell the user instead of overwriting it. - Add a row for it to the repo's top-level
README.mdskill table
6. Commit, don't push. Branch off main first (never commit on main/master directly), commit there, merge into main locally if that's this repo's pattern — then stop and ask before pushing. Committing/pushing only happens when the user asks for it.
7. Say what's untested. New skills built this way are a first draft, not verified against RED-GREEN-REFACTOR pressure scenarios. Say so plainly rather than implying they've been tested.
Common Mistakes
- Proposing something so tied to this one project's specifics that it can't actually generalize
- Skipping the AskUserQuestion step and just picking a candidate yourself
- Pushing to the remote without being asked, or committing straight on
main - Overwriting an existing
~/.claude/skills/<name>instead of flagging the collision - Forgetting to add the new skill to the repo's top-level README table