| name | daily-tool-ideas |
| description | Each night, turns today's collected tweets (a signal of what tech people care about now) into 3 STANDALONE PUBLIC-GOOD TOOL project ideas for a tech audience valuable to ThakiCloud — each buildable by composing our skills/harness, the way branded-deck became the public kr-brand-decks repo — and reports them to Slack #효정-할일. Use when "공익 도구 아이디어", "트윗에서 도구 아이디어", "daily tool ideas", or the scheduled com.thaki.tool-ideas fire. NOT product promotion — no ThakiCloud ads. Do NOT use to collect tweets (twitter-timeline-to-slack) or to actually build a chosen tool (that is a per-project repo scaffold, e.g. llm-selfhost-calculator). |
daily-tool-ideas
매일 밤, 수집된 트윗을 "지금 기술 커뮤니티가 무엇에 반응하나"의 신호로 읽어, 우리
스킬·하네스를 조합해 만들 수 있는 독립 공익 도구 프로젝트 아이디어 3개를 제안하고 Slack
#효정-할일(C0AA8NT4T8T)에 보고한다. 광고가 아니다 — branded-deck → kr-brand-decks처럼
기술 독자에게 실제 유용한 무료 도구를 지향한다.
독자 = ThakiCloud에 전략적으로 의미 있는 기술 커뮤니티(ML/플랫폼/인프라 엔지니어, 자체호스팅
스타트업, 에이전트 빌더 = 잠재 고객·채용·기여자). 좋은 인상이 곧 신뢰·리크루팅.
포맷 결정론([[sonnet-format-determinism]]): 모델은 판단·창작만, 수집·신선도·점수·중복·렌더·게시는
코드 소유. Slack mrkdwn=[[slack-post-formatting]], 신선도=[[news-freshness-and-sourcing]].
3-Phase 계약
| P | 소유 | 산출 | 게이트 |
|---|
| P1 Select | 코드 scripts/skills/tool_ideas_select.py | candidates.json — 신선도(기본 2일) + 사용분 제외 + 핫함 휴리스틱 상위 15 + 조합가능 역량 사전매칭 | 후보 ≥1 |
| P2 Ideate | 모델 (claude -p, sonnet) | tool-ideas-data.json — 공익 도구 프로젝트 3개(JTBD/독자/기능/조합역량/형태/왜 공익/출처). 콘텐츠만 | 파일 실존(코드 게이트, [[evaluator-must-act]]) |
| P3 Render+Post | 코드 scripts/skills/tool_ideas_render.py | 고정헤더 Slack mrkdwn → #효정-할일 + 사용 트윗 원장 | source_url이 candidates 실존, capability id가 카탈로그 실존 |
핫함 점수(정직): 좋아요 수 없음 → 신선도+실질신호(스레드/미디어/토픽/길이) 휴리스틱.
조합 역량 카탈로그
references/thaki-capabilities.json — 우리가 도구로 조합할 수 있는 빌딩블록(web-tool,
research-digest, voice-audio, transcribe, image-visual, deck-slides, doc-report, k8s-llmops,
agent-harness, korea-public-data, learn-audio)과 각 스킬·키워드. 코드가 후보에 사전매칭 →
모델이 2~4개를 조합. 카탈로그 밖 역량 id는 렌더 게이트가 드롭(환각 방지).
수동 실행
D=$(date -u +%F); DIR="outputs/tool-ideas/$D"
.venv/bin/python scripts/skills/tool_ideas_select.py --window-days 2 --top 15 --out "$DIR/candidates.json"
.venv/bin/python scripts/skills/tool_ideas_render.py --data "$DIR/tool-ideas-data.json" --candidates "$DIR/candidates.json" --dry-run
.venv/bin/python scripts/skills/tool_ideas_render.py --data "$DIR/tool-ideas-data.json" --candidates "$DIR/candidates.json" --post
DRY 스모크: TOOL_IDEAS_DRY_RUN=1 bash scripts/skills/run_tool_ideas.sh
data.json 스키마 (P2 산출)
{"date":"YYYY-MM-DD","ideas":[{
"project_name":"...","tagline":"...","jtbd":"when ___, I want ___, so I can ___",
"target_user":"...","what_it_does":"...","composed_capabilities":["<catalog id>", "..."],
"delivery":"독립 레포/사이트 형태","why_public_good":"광고 아닌 실제 유용성",
"source_tweet_id":"<candidate id>","source_url":"<candidate url, 실존>"}]}
정확히 3개. source_url은 candidates에서 복사. composed_capabilities는 카탈로그 id만.
채택 → 실제 구현
당신이 아이디어를 고르면, 그 도구는 개인 GitHub 독립 공개 레포로 스캐폴딩한다
(kr-brand-decks 레시피: 엔진 추출·벤더중립·로컬/무전송·MIT·면책·CI 검증). 참고 구현:
sylvanus4/llm-selfhost-calculator, daily-paper-digest, llmops-on-k8s.
배선
- 러너
scripts/skills/run_tool_ideas.sh · 스케줄 scripts/launchd/com.thaki.tool-ideas.plist(매일 23:30 KST)
- 모델정책
skill_model_policy.json(sonnet 시작·미핀·회고 승격) · 루프 .claude/loops/contracts.json(tool-ideas)
- 중복원장
outputs/tool-ideas/state/used-tweets.jsonl
- env:
TOOL_IDEAS_WINDOW_DAYS(2)·TOOL_IDEAS_CHANNEL·TOOL_IDEAS_MODEL·TOOL_IDEAS_DRY_RUN=1
gotchas
- 광고 금지가 핵심. "우리 플랫폼 써라"는 산출은 실패로 간주 — 독립 무료 도구 아이디어만.
- 좋아요 수 부재 → 핫함은 휴리스틱. P2 게이트는 파일 실존(모델 자기보고 아님).
- Slack
# 헤더·파이프표 금지(렌더러가 고정헤더 소유).
- 이 스킬은 twitter-to-linkedin-ideas(2026-07-10 폐기)의 후계 — OSS 홍보 방향에서 공익 도구 방향으로 진화.