Skip to content

edu-openskill/hamstern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

180 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ / ์žฌ์„ค์น˜ / ์‚ญ์ œ

/plugin uninstall hams@hamstern
/plugin marketplace remove hamstern
/plugin marketplace add edu-openskill/hamstern
/plugin install hams@hamstern

hamstern โ€” Claude Code ์šฉ personal AI memory system

Claude Code ์˜ ๋ชจ๋“  ์„ธ์…˜์—์„œ ๋‚˜์˜จ ๊ฒฐ์ •์‚ฌํ•ญยท์„ธ์…˜ distillยทHTML mockup ์„ ์‚ฌ์šฉ์ž ๊ฐœ์ธ์˜ GitHub repo ํ•˜๋‚˜(hamstern-data)์— UUID ๊ฒฉ๋ฆฌ๋กœ ๋ˆ„์  ์ €์žฅํ•˜๊ณ , ์–ด๋А ๋””๋ฐ”์ด์Šค์—์„œ๋“  dashboard ๋กœ ์กฐํšŒํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ํ™˜๊ธฐํ•˜๋Š” ์‹œ์Šคํ…œ.

ํ•œ ์ค„ ์ •๋ฆฌ

AI ์™€ ๋Œ€ํ™”ํ•œ ๋‚ด์šฉยท๊ฒฐ์ •์‚ฌํ•ญยทHTML ๋ชฉ์—…์„ ํœด๋Œ€ํฐยท๋ฐ์Šคํฌํƒ‘์•ฑยท๋‹ค์ค‘ ์ปดํ“จํ„ฐ CLI ์—์„œ ํ•œ ๊ณณ(hamstern-data private repo)์— ๋ชจ์œผ๊ณ , ํ•„์š”ํ•  ๋•Œ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. git-as-DB ํŒจํ„ด, ์™ธ๋ถ€ SaaS ์˜์กด 0, CLAUDE.md ๋น„-์˜ค์—ผ.

ํ•ต์‹ฌ ๋น„์ „

Claude ์™€ ํ•œ ๋Œ€ํ™”์˜ ๊ฒฐ๊ณผ๋ฌผ์€ ํœ˜๋ฐœ์„ฑ์ด๋‹ค. /clear ํ•œ ๋ฒˆ์ด๋ฉด ์‚ฌ๋ผ์ง€๊ณ , ๋””๋ฐ”์ด์Šค๋ฅผ ๋ฐ”๊พธ๋ฉด ๋‹ค์‹œ ์‹œ์ž‘. hamstern ์€ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ ์ค‘ ๊ฒฐ์ •์‚ฌํ•ญยท์„ธ์…˜ ์š”์•ฝยทHTML ๋ชฉ์—… ๋งŒ ๊ณจ๋ผ ์‚ฌ์šฉ์ž personal repo ์— ๋ˆ„์ ํ•ด ๋‘”๋‹ค. ์–ด๋–ค ํด๋ผ์šฐ๋“œ SaaS ๋„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ , ๋ชจ๋“  ๊ฒŒ git history ๋กœ ๋‚จ๋Š”๋‹ค.

  • Multi-device โ€” ํœด๋Œ€ํฐ ๋ธŒ๋ผ์šฐ์ €๋กœ dashboard ์—ด์–ด ๊ฒฐ์ •์‚ฌํ•ญ ์กฐํšŒ. ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ clone ๋งŒ ํ•˜๋ฉด ๋™๊ธฐํ™”.
  • Multi-project โ€” ํ•œ hamstern-data ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๊ฐ€ UUID ๊ฒฉ๋ฆฌ. dashboard ๊ฐ€ ํ”„๋กœ์ ํŠธ ์„ ํƒ UI.
  • Plain Markdown โ€” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” .md. lock-in 0.

์…‹์—… (3 step)

# 1. GitHub ์—์„œ private repo `hamstern-data` ์ƒ์„ฑ (์ด๋ฆ„์€ ์ž์œ , ๊ถŒ์žฅ: ๋ณธ์ธ ์ด๋ฆ„ ๋˜๋Š” hamstern-data)
#    git clone ๋กœ ์‚ฌ์šฉ์ž ๋จธ์‹ ์— (๊ธฐ๋ณธ ์œ„์น˜: ~/.claude/hamstern-data)

# 2. plugin ์„ค์น˜ (Claude Code marketplace)
/plugin install hamstern

# 3. ์ฒซ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
/hams:init "๋‚ด ์ฒซ ํ”„๋กœ์ ํŠธ"
#    โ†’ UUID ๋ฐœ๊ธ‰ + hamstern-data/projects/{uuid}/ scaffolding
#    โ†’ ~/.config/hamstern/active-project.json ์— active ๋ฐ”์ธ๋”ฉ
#    โ†’ commit + push

๋‹ค๋ฅธ ๋””๋ฐ”์ด์Šค ์ถ”๊ฐ€๋Š” hamstern-data clone ํ›„ /hams:link "ํ”„๋กœ์ ํŠธ ์ด๋ฆ„".


ํ•ต์‹ฌ ๋ช…๋ น (ํ•œ๋ˆˆ์—)

๋ช…๋ น ์—ญํ• 
/hams:init ์ƒˆ hamstern ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (UUID + scaffolding)
/hams:link ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋กœ active ๋ฐ”์ธ๋”ฉ (๋ถ€๋ถ„ ์ด๋ฆ„ ๋งค์นญ)
/hams:record ์„ธ์…˜ distill โ†’ sessions/{id}.md + decisions.md atomic dual-write
/hams:remind ๊ฒฐ์ •์‚ฌํ•ญ + ์ตœ๊ทผ ์„ธ์…˜ ํ™˜๊ธฐ (๊ธฐ๋ณธ N=2, 8KB cap; --deep N=5; --mockups)
/hams:save-mockup HTML/์ด๋ฏธ์ง€ mockup ์„ hamstern-data ์— cross-session ๋ณด์กด
/hams:dashboard local serve ๊ธฐ๋ณธ, --publish ๋กœ gh-pages multi-project dashboard
/hams:audit-decisions ๊ฒฐ์ •์‚ฌํ•ญ ํƒ€๋‹น์„ฑ ์žฌ๊ฒ€ํ†  (๋˜๋Š” dashboard [ร—] ์˜ ํด๋ฆฝ๋ณด๋“œ ๋ช…๋ น ํ๋ฆ„)
/hams:why ํ˜„์ƒ์˜ ๊ทผ๋ณธ ์›์ธ ์ถ”๋ก  โ€” ์žฌ๋ฐœ ์‹œ ์˜๊ตฌ ๋ฃฐ๋กœ ๊ฒฉ์ƒ
/hams:rule ํ”„๋กœ์ ํŠธ ์˜๊ตฌ ๋ฃฐ ๊ด€๋ฆฌ (add/list/edit/remove/promote) โ€” .claude/rules/
/hams:deeptalk Socratic ํ† ๋ก  ๋ชจ๋“œ (์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ํƒ์ƒ‰)
/hams:diary ๋กœ์ปฌ ๋งˆํฌ๋‹ค์šด โ†’ GitHub Pages ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ (๋ณ„๋„ ํ๋ฆ„)

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•

1. ์ฒซ ์…‹์—… โ€” hamstern-data repo

  1. GitHub ์—์„œ ์ƒˆ repo ์ƒ์„ฑ: hamstern-data (private ๊ถŒ์žฅ)
  2. ์‚ฌ์šฉ์ž ๋จธ์‹ ์— clone (๊ธฐ๋ณธ ์œ„์น˜: ~/.claude/hamstern-data)
  3. Claude ์„ธ์…˜์—์„œ: /hams:init "ํ”„๋กœ์ ํŠธ ์ด๋ฆ„"
  4. ์ž๋™์œผ๋กœ UUID ๋ฐœ๊ธ‰ โ†’ hamstern-data/projects/{uuid}/ scaffolding โ†’ active ๋ฐ”์ธ๋”ฉ โ†’ commit + push
  5. (์˜ต์…˜) GitHub Settings โ†’ Pages โ†’ main /docs ํ™œ์„ฑํ™” โ†’ /hams:dashboard --publish ๋กœ ํœด๋Œ€ํฐ ๋“ฑ์—์„œ ์กฐํšŒ ๊ฐ€๋Šฅ

2. ๊ฒฐ์ •์‚ฌํ•ญ ๋ˆ„์  โ€” /hams:record

์ง€๊ธˆ ์„ธ์…˜์—์„œ ๋„์ถœ๋œ ๊ฒฐ์ •ยท์‹คํŒจยท์—ด๋ฆฐ์งˆ๋ฌธ์„ distill ํ•ด์„œ ๋‘ ๊ณณ์— atomic ์œผ๋กœ ์“ด๋‹ค:

  • hamstern-data/projects/{uuid}/sessions/{id}.md โ€” ์„ธ์…˜๋ณ„ full distill
  • hamstern-data/projects/{uuid}/decisions.md โ€” ๊ฒฐ์ •๋งŒ append (์ž๋™ dedup)

ํ˜ธ์ถœ ์‹œ์ : ๊ตต์งํ•œ ๊ฒฐ์ •์„ ๋๋‚ธ ์งํ›„, /clear ์ง์ „. Claude Code CLI + Desktop ์–‘์ชฝ ๋™์ž‘ (Desktop ์—์„œ FS ์“ฐ๊ธฐ ์‹คํŒจ ์‹œ ๋™์ผ ๋งˆํฌ๋‹ค์šด์„ ์ฑ„ํŒ…์— ์ถœ๋ ฅ โ†’ CLI ์—์„œ ๋ณต๋ถ™).

3. ๊ฒฐ์ •์‚ฌํ•ญ ํ™˜๊ธฐ โ€” /hams:remind

/clear ํ›„ ๊ฒฐ์ •์‚ฌํ•ญ์ด ํ•„์š”ํ•ด์ง€๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœ. ์ž๋™ ์ฃผ์ž… ์—†์Œ.

/hams:remind             # ๋ชจ๋“  decisions + ์ตœ๊ทผ N=2 sessions (8KB cap)
/hams:remind --deep      # N=5 sessions
/hams:remind --mockups   # mockup ๋ฉ”ํƒ€๋„ ํฌํ•จ

์™œ ์ž๋™ ์ฃผ์ž…์„ ์•ˆ ํ•˜๋Š”๊ฐ€:

  • /clear = ์ง„์งœ ์ปจํ…์ŠคํŠธ ๋น„์šฐ๊ธฐ. ์ž๋™ ์ฃผ์ž…์€ GC ํšจ๊ณผ๋ฅผ ๋ฐ˜๊ฐ์‹œํ‚ด.
  • ๊ฐ€๋ฒผ์šด ์งˆ๋ฌธ์€ ๋นˆ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋” ๋น ๋ฅด๊ณ  ์ •ํ™•.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์˜์‹์ ์œผ๋กœ "์ง€๊ธˆ ์ด ๊ฒฐ์ •๋“ค์ด ์ ์šฉ ์ค‘" ์ž„์„ ์ธ์ง€ํ•˜๋Š” ๊ฒŒ ํ†ต์ œ๋ ฅ์— ์œ ๋ฆฌ.

SessionStart ํ›… ์ž๋™ ์ฃผ์ž…์€ ํ๊ธฐ. CLAUDE.md ๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ โ€” ๊ฒฐ์ •์‚ฌํ•ญ์€ ํ˜ธ์ถœํ•œ ๊ทธ ์„ธ์…˜์—๋งŒ ๋“ค์–ด๊ฐ€๊ณ , ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„ยท๋””๋ฐ”์ด์Šค์— ์˜ํ–ฅ 0.

4. HTML mockup ๋ณด์กด โ€” /hams:save-mockup

UI ์Šค์ผ€์น˜ยท์‹œ๋ฎฌ๋ ˆ์ดํ„ฐยท๋„์‹ HTML ์„ cross-session ๋ณด์กด.

/hams:save-mockup ./sketch.html "๋กœ๊ทธ์ธ ํ™”๋ฉด v2"
#  โ†’ hamstern-data/projects/{uuid}/mockups/{slug}.html ์ €์žฅ
#  โ†’ mockups/_index.json ๊ฐฑ์‹ 
#  โ†’ (gh-pages ํ™œ์„ฑ ์‹œ) ์ฆ‰์‹œ URL ๋ฐœ๊ธ‰

/hams:remind --mockups ๋กœ ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ๋„ ๋ฉ”ํƒ€ยท๋งํฌ ํ™˜๊ธฐ.

5. Dashboard โ€” /hams:dashboard

๊ธฐ๋ณธ ๋™์ž‘์€ local serve โ€” ์™ธ๋ถ€ ์˜์กด 0 ์œผ๋กœ ์ฆ‰์‹œ ๋™์ž‘:

/hams:dashboard          # ๋™์  ํฌํŠธ + ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์˜คํ”ˆ, multi-project view
/hams:dashboard --publish  # docs/data/ ๋ฒˆ๋“ค + commitยทpush โ†’ gh-pages ๊ฒŒ์‹œ

View ๊ตฌ์กฐ:

  • ๋ฉ”์ธ ํŽ˜์ด์ง€: ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก (projects/_index.json ๊ธฐ๋ฐ˜) + ๊ฒ€์ƒ‰
  • per-project 4-column view: sessions / decisions / mockups / decisions-log

CDN ์˜์กด์„ฑ: marked.js + DOMPurify 2๊ฐœ. ๊ทธ ์™ธ stdlib only.

6. ๊ฒฐ์ • ํŽธ์ง‘ (dashboard [ร—] โ†’ audit-decisions remove)

dashboard ์˜ ๊ฒฐ์ • ์˜† [ร—] ํด๋ฆญ โ†’ ํด๋ฆฝ๋ณด๋“œ์— ๋‹ค์Œ์ด ๋ณต์‚ฌ๋จ:

/hams:audit-decisions remove "<text>" --project-uuid <UUID>

๋‹ค์Œ Claude ์„ธ์…˜์— ๋ถ™์—ฌ๋„ฃ์–ด ์‹คํ–‰ โ†’ decisions.md ์—์„œ ํ•ด๋‹น ์ค„ ์‚ญ์ œ + decisions-log.md ์— ์ œ๊ฑฐ ์ด๋ฒคํŠธ append โ†’ ๋‹ค์Œ dashboard publish ์‹œ ๋ฐ˜์˜.

7. ํ”„๋กœ์ ํŠธ ์ „ํ™˜ โ€” /hams:link

/hams:link "๋กœ๊ทธ์ธ"        # ๋ถ€๋ถ„ ์ด๋ฆ„ ๋งค์นญ โ†’ ํ›„๋ณด 1๊ฐœ๋ฉด ์ฆ‰์‹œ ๋ฐ”์ธ๋”ฉ
/hams:link                 # ์ธ์ž ์—†์œผ๋ฉด ์ „์ฒด ๋ชฉ๋ก + ์„ ํƒ

~/.config/hamstern/active-project.json ๊ฐฑ์‹ . ๋””๋ฐ”์ด์Šค๋ณ„ ์บ์‹œ โ†’ multi-device ๊ฐ€ ๊ฐ์ž ๋‹ค๋ฅธ active ๊ฐ€๋Šฅ.


๋ณด์กฐ ๋ช…๋ น

/hams:audit-decisions (interactive ํ๋ฆ„)

/hams:audit-decisions
#  โ†’ active ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๊ฒฐ์ •์‚ฌํ•ญ์„ Opus ๋ถ„์„์œผ๋กœ 1๊ฐœ์”ฉ ๊ฒ€ํ† 
#  โ†’ [k] Keep / [m] Modify / [d] Delete / [s] Skip

active-project.json ์—์„œ UUID + path ์ž๋™ resolve. dashboard [ร—] ์˜ remove "<text>" ํ˜•์‹๊ณผ ๋ณ„๊ฐœ ์‚ฌ์šฉ ์‚ฌ๋ก€.

/hams:why + /hams:rule (์˜๊ตฌ ๋ฃฐ ์‹œ์Šคํ…œ)

ํ”„๋กœ์ ํŠธ์˜ ๋ฐ˜๋ณต๋˜๋Š” ์‹ค์ˆ˜๋ฅผ ์˜๊ตฌ ์›์น™์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” 2๋‹จ๊ณ„ ์‹œ์Šคํ…œ.

๊ฒฝ๋กœ ์ž๋™ ๋กœ๋“œ ์šฉ๋„
.claude/rules/{topic}.md session_start (eager) ํฌ์ธํ„ฐ (5~7์ค„)
.claude/rules/references/{topic}/* lazy ๋ณธ๋ฌธ (ํŠธ๋ฆฌ๊ฑฐ ๋งค์นญ ์‹œ Claude ๊ฐ€ Read)
.hamstern/why/rules/{topic}.md โ€” ์ž ์ • ๋ณด๊ด€์†Œ (๊ฒฉ์ƒ ์ „)

๊ฒฝ๋กœ 1 โ€” ์ง„๋‹จํ˜• /hams:why: 1ํšŒ์ฐจ = ๊ทผ๋ณธ ์›์ธ ๋„์ถœ + ์ž ์ • ์ €์žฅ. 2ํšŒ์ฐจ(๊ฐ™์€ ์›์น™ ์žฌ๋ฐœ) = ์ž๋™ ๊ฒฉ์ƒ ์ œ์•ˆ.

๊ฒฝ๋กœ 2 โ€” ์ง์ ‘ ๋“ฑ๋ก /hams:rule add: ๋Œ€ํ™” ์ค‘ ๋„์ถœํ•œ ํŒจํ„ด์„ ์ฆ‰์‹œ ์˜๊ตฌํ™”.

/hams:rule add              # ์ปจํ…์ŠคํŠธ์—์„œ ์ž๋™ ์ถ”์ถœ โ†’ 1์ฐจ ์ดˆ์•ˆ โ†’ ๊ฒ€์ˆ˜ โ†’ ์˜๊ตฌ
/hams:rule list             # ๋ชฉ๋ก
/hams:rule edit {topic}     # ์ˆ˜์ •
/hams:rule remove {topic}   # ์‚ญ์ œ
/hams:rule promote {topic}  # ์ž ์ • โ†’ ์˜๊ตฌ ์ˆ˜๋™ ๊ฒฉ์ƒ

์„ค๊ณ„ ์›์น™: CLAUDE.md ์ ˆ๋Œ€ ์•ˆ ๊ฑด๋“œ๋ฆผ ยท ํฌ์ธํ„ฐ ์ž‘๊ฒŒยท๋ณธ๋ฌธ lazy ยท ์‚ฌ์šฉ์ž ํ™•์‹  โ†’ ์ง์ ‘ ๋“ฑ๋ก, ์ง„๋‹จ ๊ฒฐ๊ณผ โ†’ ๊ฒฉ์ƒ ์‚ฌ๋‹ค๋ฆฌ.

/hams:deeptalk โ€” Socratic ํ† ๋ก 

์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ๋ก ยท๊ตฌํ˜„์„ ๊ฐ•์š”ํ•˜์ง€ ์•Š๊ณ  ์˜๊ฒฌยทํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ตํ™˜ํ•˜๋ ค ํ•  ๋•Œ. ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ์ฃผ์ œ ํƒ์ƒ‰. ์ž์—ฐ ํŠธ๋ฆฌ๊ฑฐ: "์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?", "๋‹ˆ ์˜๊ฒฌ์€?", "๊ฐ™์ด ์ƒ๊ฐํ•ด๋ณด์ž".

/hams:diary โ€” ๋ณ„๋„ ๋ผ์ดํ”„์‚ฌ์ดํด (๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ)

hamstern-data ์™€ ๋ถ„๋ฆฌ๋œ ๋„๊ตฌ. ๋กœ์ปฌ .md / .html ์„ GitHub Pages ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ๋กœ ๊ฒŒ์‹œ.

/hams:diary config repo https://github.com/myuser/my-blog.git
/hams:diary publish ./hello.md ์ผ์ƒ
/hams:diary edit hello-world
/hams:diary option   # ํ•œ ํ™”๋ฉด ์‚ฌ์šฉ๋ฒ•

3 ์„œ๋ธŒ๋ช…๋ น (publish ยท edit ยท config) + 5 ๋””์ž์ธ ํ…œํ”Œ๋ฆฟ (minimal ยท tech ยท lecture ยท notebook ยท magazine). ๊ฒ€์ƒ‰ (Pagefind) ยท ๋Œ“๊ธ€ (giscus) ํ†ตํ•ฉ. ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ skills/diary/SKILL.md.


์•„ํ‚คํ…์ฒ˜ โ€” git-as-DB

์‚ฌ์šฉ์ž ๋””๋ฐ”์ด์Šค (CLI / Desktop / ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €)
        โ†“ /hams:record ยท /hams:save-mockup
hamstern-data/  (์‚ฌ์šฉ์ž personal GitHub repo, private)
โ”œโ”€โ”€ meta.json                         # schema_version, created_at
โ”œโ”€โ”€ projects/
โ”‚   โ”œโ”€โ”€ _index.json                   # UUID โ†’ {name, last_active, counts}
โ”‚   โ””โ”€โ”€ {uuid}/
โ”‚       โ”œโ”€โ”€ decisions.md              # ๊ฒฐ์ •๋งŒ (์ž๋™ dedup)
โ”‚       โ”œโ”€โ”€ decisions-log.md          # append-only ์ œ๊ฑฐ ์ด๋ฒคํŠธ
โ”‚       โ”œโ”€โ”€ sessions/{id}.md          # ์„ธ์…˜๋ณ„ full distill
โ”‚       โ””โ”€โ”€ mockups/
โ”‚           โ”œโ”€โ”€ _index.json
โ”‚           โ””โ”€โ”€ {slug}.html
โ””โ”€โ”€ docs/                             # gh-pages dashboard (--publish ์‹œ)
    โ”œโ”€โ”€ index.html ยท app.js ยท style.css
    โ””โ”€โ”€ data/ (build.py ์‚ฐ์ถœ)
Cloud DB (Supabase ๋“ฑ) hamstern (git-as-DB)
์“ฐ๊ธฐ API call git commit + push
์ฝ๊ธฐ API call git clone / fetch
๊ฒ€์ƒ‰ SQL/full-text dashboard ๋˜๋Š” ripgrep
์™ธ๋ถ€ ์˜์กด SaaS account GitHub ๋งŒ
๋น„์šฉ ์‚ฌ์šฉ๋Ÿ‰ 0 (private repo)
์ด๋ ฅ DB log git history (์ž๋™)
Multi-device sync server-side git pull/push
Lock-in provider ์ข…์† plain markdown

ํ™˜๊ฒฝ๋ณ„ ์‚ฌ์šฉ

ํ™˜๊ฒฝ ์“ฐ๊ธฐ ์ฝ๊ธฐ
Claude Code CLI โœ… โœ…
Claude Desktop App โœ… (FS write ๊ฐ€๋Šฅ ์‹œ) โœ…
Cloud Claude.ai/code โœ… (PAT ํ•„์š”) โœ…
ํœด๋Œ€ํฐ ๋ธŒ๋ผ์šฐ์ € โŒ โœ… (dashboard --publish URL)

๋ฐ์ดํ„ฐ ํŒŒ์ผ ํฌ๋งท

  • meta.json: {schema_version, created_at}
  • projects/_index.json: { {uuid}: {name, last_active, decision_count, session_count, mockup_count} }
  • mockups/_index.json: { {slug}: {title, created_at, source} }
  • decisions.md: ## {category} ํ—ค๋” + - {text} <!-- session: {id} --> ์ค„
  • decisions-log.md: ## removed ํ—ค๋” + ์ œ๊ฑฐ ์ด๋ฒคํŠธ append-only
  • sessions/{id}.md: ## ๊ฒฐ์ • / ## ์‹คํŒจ / ## ์—ด๋ฆฐ ์งˆ๋ฌธ 3-์„น์…˜

~/.config/hamstern/active-project.json (๋””๋ฐ”์ด์Šค๋ณ„):

{ "uuid": "...", "hamstern_data_path": "/home/user/.claude/hamstern-data" }

์•Œ๋ ค์ง„ ์ œ์•ฝ

  • bash โ†’ Python -c ๋ณด๊ฐ„ escape: single quote ์•ˆ์ „์„ฑ ์•ฝํ•จ (์‹ค์‚ฌ์šฉ ์œ„ํ—˜ ๋‚ฎ์Œ, hardening ๋ฐฑ๋กœ๊ทธ)
  • uuidv7 fallback (Python <3.13): non-strict shape
  • merge conflict ์ž๋™ ํ•ด๊ฒฐ ์—†์Œ โ€” ์–‘ ๋””๋ฐ”์ด์Šค ๋™์‹œ push ์‹œ ์‚ฌ์šฉ์ž ์ˆ˜๋™ ํ•ด๊ฒฐ
  • gh-pages publish ํ™œ์„ฑํ™”๋Š” 1ํšŒ์„ฑ manual (Settings โ†’ Pages โ†’ main /docs)

Sub-projects (๋ณ€๊ฒฝ ์ด๋ ฅ)

  • Sub-A (2026-04-26) โ€” Rules system (/hams:why + /hams:rule), 2-๊ฒฝ๋กœ ๋“ฑ๋ก (์ง„๋‹จํ˜• / ์ง์ ‘)
  • Sub-B (2026-04-26~) โ€” diary (๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ), 3 ์„œ๋ธŒ๋ช…๋ น + 5 ํ…œํ”Œ๋ฆฟ + ๊ฒ€์ƒ‰ยท๋Œ“๊ธ€
  • Sub-C (2026-05-23) โ€” /hams:record ์‹ ์„ค, hooks ์ „๋ถ€ ์ œ๊ฑฐ, 3-tier โ†’ 2-tier ํ‰ํƒ„ํ™”
  • Sub-D (2026-05-23) โ€” Dashboard static gh-pages + ๋ธŒ๋ผ์šฐ์ € ํŽธ์ง‘ UI ([ร—] ํด๋ฆฝ๋ณด๋“œ ํ๋ฆ„)
  • Sub-E (2026-05-23) โ€” Dashboard local serve ๊ธฐ๋ณธ, dynamic port + path traversal ์ฐจ๋‹จ
  • Sub-project F (2026-05-24) โ€” hamstern-data repo + UUID per project (git-as-DB) โ€” ํ•ต์‹ฌ ๋น„์ „ ์‹คํ˜„. ์‹ ๊ทœ skill (init/link/save-mockup) + multi-project dashboard

Sub-G+ ํ›„๋ณด

  • Hardening pass โ€” bash โ†’ Python ๋ณด๊ฐ„ escape ๊ฒฌ๊ณ ํ™”, uuid7 ํ‘œ์ค€ ์ฑ„ํƒ (Python 3.13+)
  • Hybrid index โ€” Supabase ๊ฐ™์€ ๊ฐ€๋ฒผ์šด read-only index ๋กœ ํœด๋Œ€ํฐ ๊ฒ€์ƒ‰ ์‘๋‹ต ๊ฐ€์† (์„ ํƒ)
  • Mobile PWA โ€” dashboard ์˜ offline-first PWA ํ™” (์„œ๋น„์Šค ์›Œ์ปค + ์บ์‹œ)
  • Conflict-aware sync โ€” ์–‘ ๋””๋ฐ”์ด์Šค ๋™์‹œ push ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋จธ์ง€ ํ›„๋ณด ์ œ์‹œ
  • Decision graph โ€” ๊ฒฐ์ •์‚ฌํ•ญ ๊ฐ„ ์˜์กด ๊ด€๊ณ„ ์‹œ๊ฐํ™” (Graphviz / mermaid)

๋ผ์ด์„ ์Šค / Contributing

๋‚ด๋ถ€ ๋„๊ตฌ. PR / issue ํ™˜์˜. docs/conventions.md ์˜ ์ €์žฅ์†Œ ๋ ˆ์ด์•„์›ƒยท๊ฒฝ๋กœ ํ•ด์„ ๊ทœ์•ฝ์„ ๋”ฐ๋ฅธ๋‹ค.


์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‘ ์ฝœ๋ก  ํ‘œ๊ธฐ (/hams:<name>) โ€” Claude Code ๊ณต์‹ plugin skill invocation ํ‘œ์ค€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors