| name | session-init |
| description | Use when starting a work session and you need to lock down the target branch, PR, scope,
and approach before making any changes. Prevents pushing to wrong branches, modifying
out-of-scope files, or losing context between sessions.
Use when: "/session-init", "์ธ์
์์", "์์
์์", "์ปจํ
์คํธ ์ค์ ",
"์ด์ ํ๋ ๊ฑฐ ์ด์ด์", "์ด ๋ธ๋์น์์ ์์
ํ ๊ฒ", "PR ์์
์์",
"scope ์ค์ ", "์์
์ปจํ
์คํธ", "session init", "์ธ์
์ด๊ธฐํ",
"์๊น ํ๋ ๊ฑฐ ์ด์ด๊ฐ๋", "์์
์ด์ด์", "context setup"
NOT for: quick questions, code explanations, or single-file edits with obvious context.
NOT /scope (analyzes blast radius), NOT /session-wrap (ends sessions), NOT /session-analyzer (post-hoc).
|
session-init
์ธ์
์์ ์ ์์
context๋ฅผ ๋ช
์์ ์ผ๋ก ํ์ธํ๊ณ ๊ณ ์ ํ๋ค. ๊ณ ์ ๋ context๋ ์ธ์
๋ด๋ด ์ฐธ์กฐ๋์ด ์๋ชป๋ branch์ pushํ๊ฑฐ๋, scope ๋ฐ ํ์ผ์ ์์ ํ๋ ์ค์๋ฅผ ๋ฐฉ์งํ๋ค.
/session-init
โ
Step 1: ์ด์ state ํ์ธ โ ์ด์ด๊ฐ๊ธฐ or ์ ์์
โ
Step 2: Context ์์ง (์๋ ๊ฐ์ง + ์ฌ์ฉ์ ํ์ธ)
โ
Step 3: Context ๊ณ ์ (state ์ ์ฅ + context.md ์์ฑ)
โ
์ธ์
๋ด ์์
โ context ์ฐธ์กฐํ์ฌ scope ์ดํ ๋ฐฉ์ง
When to Use
| Skill | Purpose | ๊ตฌ๋ถ |
|---|
| /session-init | ์ธ์
์์ ์ ์์
context ์ค์ + ๊ณ ์ | ์์
์ |
| /scope | ๋ณ๊ฒฝ ์ํฅ ๋ฒ์ ๋ถ์ | ์์
์ค (์ด๋๋ฅผ ๊ณ ์น ์ง) |
| /session-wrap | ์ธ์
์ข
๋ฃ ์ ์ ๋ฆฌ + ๋ฌธ์ํ | ์์
ํ |
Use when:
- ์ธ์
์์ ์ ์ด๋ค branch/PR์์ ์์
ํ ์ง ๋ช
ํํ ํ๊ณ ์ถ์ ๋
- ์ด์ ์ธ์
์ ์์
์ ์ด์ด๊ฐ๊ณ ์ถ์ ๋
- scope๋ฅผ ๋ฏธ๋ฆฌ ์ ํด๋๊ณ ์ดํ์ ๋ฐฉ์งํ๊ณ ์ถ์ ๋
Do NOT use when:
- ๋จ์ ์ง๋ฌธ ("์ด ์ฝ๋ ์ค๋ช
ํด์ค") โ context ๊ณ ์ ๋ถํ์
- ์ด๋ฏธ context๊ฐ ๋ช
ํํ ๋จ๋ฐ์ฑ ์์
Step 1: ์ด์ State ํ์ธ
์ธ์
์์ ์ ๊ฐ์ฅ ๋จผ์ ์ด์ session-init state๋ฅผ ํ์ธํ๋ค. ์ต๊ทผ 5๊ฐ state ํ์ผ์์ session-init ํค๋ฅผ ๊ฒ์ํ๋ค.
๋ช
๋ น์ด ์์ธ: references/state-commands.md ์ฐธ์กฐ (์ด์ State ๊ฒ์ ์น์
)
์ด์ state๊ฐ ์์ ๋:
์ด์ ์์
์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค:
| ํญ๋ชฉ | ๊ฐ |
|------|---|
| Task | [task ์์ฝ] |
| Branch | [branch] |
| PR | #[number] |
| Scope | [scope] |
| Approach | [approach] |
| ๋ง์ง๋ง ํ๋ | [timestamp] |
์ด ์์
์ ์ด์ด๊ฐ๊น์?
AskUserQuestion: "์ด์ด๊ฐ๊ธฐ" / "์ ์์
์์"
- ์ด์ด๊ฐ๊ธฐ โ ์ด์ state๋ฅผ ํ์ฌ ์ธ์
์ ๋ณต์ฌ, Step 3์ผ๋ก ์งํ
- ์ ์์
โ Step 2๋ก ์งํ
์ด์ state๊ฐ ์์ ๋: โ Step 2๋ก ๋ฐ๋ก ์งํ
Step 2: Context ์์ง
2-A: ์๋ ๊ฐ์ง
์ฌ์ฉ์์๊ฒ ๋ฌป๊ธฐ ์ ์ branch, PR, worktree, ์ต๊ทผ ๋ณ๊ฒฝ ํ์ผ์ ์๋ ๊ฐ์งํ๋ค.
๋ช
๋ น์ด ์์ธ: references/state-commands.md ์ฐธ์กฐ (์๋ ๊ฐ์ง ์น์
)
Non-Git ๋๋ ํ ๋ฆฌ์ธ ๊ฒฝ์ฐ: git ๋ช
๋ น์ด ์คํจํ๋ฉด "ํ์ฌ ๋๋ ํ ๋ฆฌ๋ git ์ ์ฅ์๊ฐ ์๋๋๋ค"๋ฅผ ์๋ดํ๊ณ , ํ๋ก์ ํธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉ์์๊ฒ ์์ฒญํ๋ค. ๊ฒฝ๋ก๋ฅผ ๋ฐ์ผ๋ฉด ํด๋น ๋๋ ํ ๋ฆฌ์์ ์๋ ๊ฐ์ง๋ฅผ ์ฌ์คํํ๋ค.
2-B: ์ฌ์ฉ์ ํ์ธ
์๋ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ์ฌ AskUserQuestion์ผ๋ก context๋ฅผ ํ์ธํ๋ค:
์๋ ๊ฐ์ง๋ context:
- Branch: [๊ฐ์ง๋จ or ๋ฏธ๊ฐ์ง]
- PR: [๊ฐ์ง๋จ or ๋ฏธ๊ฐ์ง]
- Worktree: [ํ์ฌ ๊ฒฝ๋ก]
- ์ต๊ทผ ๋ณ๊ฒฝ ํ์ผ: [๋ชฉ๋ก]
์ด๋ค ์์
์ ํ์ค ๊ฑด๊ฐ์? ๋ค์์ ์๋ ค์ฃผ์ธ์:
1. ์์
๋ชฉ์ (๋ฌด์์ ํ ๊ฑด๊ฐ์?)
2. Scope (์ด๋ค ํ์ผ/๋๋ ํ ๋ฆฌ๋ง ์์ ?)
3. Approach (์ด๋ค ์ ๊ทผ๋ฒ?)
4. Branch/PR ์์ (์๋ ๊ฐ์ง๊ฐ ํ๋ ธ์ผ๋ฉด)
์ฌ์ฉ์๊ฐ ์์ฐ์ด๋ก ๋ตํ๋ฉด, ๋ค์ ํ๋๋ฅผ ์ถ์ถํ๋ค:
| ํ๋ | ํ์ | ๊ธฐ๋ณธ๊ฐ |
|---|
task | O | - |
branch | O | ์๋ ๊ฐ์ง |
pr | - | ์๋ ๊ฐ์ง or null |
worktree | - | pwd |
scope | - | "์ ์ฒด" (์ ํ ์์) |
approach | - | null |
"๊ทธ๋ฅ ๋นจ๋ฆฌ ์์ํ์" ๊ฐ์ ์๋ ฅ์ด ์์ด๋, ์ต์ํ task์ branch๋ ํ์ธํ๋ค. ์ด ๋ ๊ฐ์ง ์์ด๋ context๋ฅผ ๊ณ ์ ํ ์ ์๋ค.
Step 3: Context ๊ณ ์
3-A: State ์ ์ฅ
hoyeon-cli session set์ผ๋ก context๋ฅผ session-init namespace์ ์ ์ฅํ๋ค. session-context.md ํ์ผ๋ ๋์์ ์์ฑํ์ฌ ๋ค๋ฅธ ์คํฌ์ด ์ฐธ์กฐํ ์ ์๊ฒ ํ๋ค.
๋ช
๋ น์ด ์์ธ: references/state-commands.md ์ฐธ์กฐ (State ์ ์ฅ + Context ํ์ผ ์์ฑ ์น์
)
3-C: ํ์ธ ์ถ๋ ฅ
## Session Context ๊ณ ์ ์๋ฃ
| ํญ๋ชฉ | ๊ฐ |
|------|---|
| Task | [task] |
| Branch | [branch] |
| PR | [pr or "-"] |
| Scope | [scope] |
| Approach | [approach or "-"] |
์ด context๋ ์ธ์
๋ด๋ด ์ ์ง๋ฉ๋๋ค.
scope ๋ฐ ํ์ผ์ ์์ ํ๋ ค ํ๋ฉด ํ์ธ์ ์์ฒญํฉ๋๋ค.
์์
์ ์์ํ์ธ์.
Scope ์ฐธ์กฐ ๊ฐ์ด๋
session-init์ผ๋ก ๊ณ ์ ๋ context๋ ์ธ์
๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ์ฐธ์กฐ๋๋ค:
git ์์
์ :
- pushํ branch๊ฐ
session-init.branch์ ์ผ์นํ๋์ง ํ์ธ
- PR ๋ฒํธ๊ฐ
session-init.pr๊ณผ ์ผ์นํ๋์ง ํ์ธ
ํ์ผ ์์ ์ :
- ์์ ํ ํ์ผ์ด
session-init.scope ๋ฒ์ ์์ธ์ง ํ์ธ
- scope ๋ฐ์ด๋ฉด: "์ด ํ์ผ์ ํ์ฌ scope([scope]) ๋ฐ์
๋๋ค. ์์ ํ ๊น์?"
approach ์ฐธ์กฐ:
- ๊ธฐ์ ์ ๊ฒฐ์ ์ด ํ์ํ ๋
session-init.approach๋ฅผ ์ฐธ๊ณ
- ์: approach๊ฐ "SQLAlchemy Trino dialect"์ด๋ฉด regex ๊ธฐ๋ฐ ์ ๊ทผ ์๋ ๊ฑฐ๋ถ
์ด ์ฐธ์กฐ๋ session-init state๊ฐ ๋ํ ์ปจํ
์คํธ์ ๋ก๋๋์ด ์์ผ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋์ํ๋ค.
๋ณ๋์ hook์ด๋ ๊ฐ์ ๋ฉ์ปค๋์ฆ ์์ด, state ์ ๋ณด๊ฐ ๋ํ ๋ด์ ์๋ ๊ฒ๋ง์ผ๋ก ์ฌ๋ฐ๋ฅธ ํ๋จ์ ์ ๋ํ๋ค.
Context ์์
์ธ์
์ค๊ฐ์ context๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๋:
/session-init ์
๋ฐ์ดํธ โ scope๋ฅผ src/api/์์ src/ ์ ์ฒด๋ก ํ์ฅ
๋์ผํ Step 3์ ์ฌ์คํํ๋, ๋ณ๊ฒฝ๋ ํ๋๋ง ์
๋ฐ์ดํธํ๊ณ ๋๋จธ์ง๋ ์ ์งํ๋ค.
Common Mistakes
| Mistake | Fix |
|---|
| "๋นจ๋ฆฌ ์์ํ์" pressure์ task/branch ํ์ธ ์๋ต | ์ต์ task + branch๋ ๋ฐ๋์ ํ์ธ |
| ์๋ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ๋ฌด์กฐ๊ฑด ์ ๋ขฐ | ์ฌ์ฉ์์๊ฒ ๋ฐ๋์ ํ์ธ. ์๋ ๊ฐ์ง๋ ์ ์์ผ ๋ฟ |
| scope๋ฅผ ๋๋ฌด ๋๊ฒ ์ค์ ("์ ์ฒด") | ๊ฐ๋ฅํ๋ฉด ๊ตฌ์ฒด์ ๋๋ ํ ๋ฆฌ/ํ์ผ ๋จ์๋ก ์ขํ๊ธฐ |
| ์ด์ state๋ฅผ ๋ฌด์กฐ๊ฑด ์ด์ด๊ฐ๊ธฐ | ์ค๋๋ state(24์๊ฐ+)๋ ์ ํจ์ฑ ํ์ธ ํ์ |
| context.md๋ฅผ ์์ฑํ์ง ์์ | state JSON + context.md ๋ ๋ค ์์ฑ (๋ค๋ฅธ ์คํฌ ์ฐธ์กฐ์ฉ) |