Morning Ledger: Brand Voice Framework (Draft v1)
Voice at a glance
Morning Ledger treats coffee as a small daily ritual worth doing well. The "ledger" idea gives us a point of view: we keep honest accounts of what's in the bag, what it costs, and when it arrives. We sound like a dependable friend who happens to know a lot about coffee.
Position on the spectrums
- Formal ←–––●–→ Casual: leans casual, but tidy
- Simple ←●––––––→ Complex: plain language, with no jargon unless we explain it
- Serious ←––●––→ Playful: dry and warm, not zany
- Reserved ←–––●–→ Expressive: calm enthusiasm, saved for the coffee itself
Personality traits
| Trait | What it means | Do | Don't |
|---|---|---|---|
| Dependable | We're precise and consistent, and we keep our promises about dates, prices and origins. | "Ships Tuesday. Arrives by Friday." | "Arrives whenever the coffee gods allow!" |
| Transparent | Like a ledger, we show our numbers: sourcing, roast dates, pricing, how to pause or cancel. | "Roasted Oct 2. Farmer paid $4.10/lb, up from $2.60 market." | "Ethically sourced, premium quality." |
| Warmly dry | Understated humor and a morning-person-adjacent sense of humor. Never forced. | "Your coffee's here. The day can begin." | "OMG you NEED this in your life!!!" |
| Knowledgeable, not snobby | We know our stuff and share it simply, without gatekeeping. | "Tastes like brown sugar and orange peel. Good with milk or without." | "Notes of bergamot-adjacent stone fruit with a nuanced finish." |
| Unhurried | We respect mornings and people's attention. We keep copy short and never create false urgency. | "Skip a month anytime." | "Last chance! Only 2 hours left!" |
Tone by channel
Website
Tone: clear, calm, and specific. This is where the ledger idea shows most.
- Lead with facts: roast date, origin, price, delivery cadence.
- Short sentences. Headlines state the benefit plainly.
- Make subscription terms (pause, skip, cancel) easy to find, in plain words.
- Humor is light and limited to microcopy (empty states, confirmations, 404).
Examples
- Hero: "Good coffee, on the calendar."
- CTA: "Start my subscription" (not "Join the revolution")
- Confirmation: "Entry recorded. Your first bag ships Tuesday."
- 404: "This page isn't on the books."
Tone: personal, useful, and brief. It's like a note from someone who knows your routine.
- Transactional (orders, shipping, billing): the most straightforward. Information first, with a small touch of warmth.
- Lifecycle/newsletter: a bit more story, such as the farm, the roast, a brew tip. One idea per email.
- Problem or apology: own it quickly, with no spin, and say what we're doing. No jokes.
- Subject lines: specific, under about 45 characters, with no ALL CAPS or stacked exclamation marks.
Examples
- Subject: "Your October bag ships Tuesday"
- Subject: "A small price change, explained"
- Apology: "Your bag was late, and that's on us. We've refunded the shipping and sent a replacement."
Social
Tone: the most playful and conversational, though still dry rather than loud.
- Observational humor about mornings, routines and the first cup.
- Short captions. Let photos of the coffee, the farm and the kitchen counter carry the content.
- Reply like a person, using first names and real answers. Handle complaints publicly with empathy, then move to DMs for details.
- Emoji sparingly (☕ at most). Hashtags minimal.
Examples
- "Monday, itemized: 1 alarm, 2 snoozes, 1 very good cup."
- "Roasted yesterday. In your kitchen by Friday. That's the whole trick."
- Reply to a complaint: "That's not the experience we want you to have, Sam. Sending you a DM now."
Phrases and patterns to avoid
Hype and empty superlatives
- "Best coffee ever" / "world-class" / "game-changing" / "life-changing"
- "Revolutionize your mornings"
- "Premium quality" / "artisanal" without proof
Vague virtue claims
- "Ethically sourced" / "sustainable" / "ethically-made" with no specifics. Give numbers or leave it out.
Fake urgency and pressure
- "Don't miss out!" / "Last chance!" / "Act now!"
- "You'll regret it" or any guilt-based opt-out copy ("No, I don't like great coffee")
Coffee clichés and caffeine-addict tropes
- "But first, coffee" / "Rise and grind" / "Brew-tiful" / "Bean there, done that" / "Espresso yourself"
- "I can't function without my coffee" / "Fuel for your hustle"
Pretentious tasting language
- "Nuanced," "terroir-driven," "elevated," "curated" (unless explained simply)
- Unexplained jargon: "washed process," "cupping score" (explain it or skip it)
Subscription-industry dark patterns in copy
- Hiding cancellation ("Contact us to cancel")
- "Free trial" without stating when billing starts
Tone-deaf filler
- "We're so excited to announce…" / "Thrilled to…"
- "Hey coffee lover!" / "Hi there, friend!"
- "Oops!" for serious errors like billing mistakes
Mechanics: no ALL CAPS shouting, no more than one exclamation mark per piece, and avoid puns in subject lines.
Sample rewrites
| Generic | Morning Ledger |
|---|---|
| "Experience the ultimate coffee journey with our premium curated beans!" | "Two new coffees each month, roasted days before they ship." |
| "Don't miss out! Subscribe NOW!" | "Start whenever you're ready. Skip or cancel anytime." |
| "Oops! Something went wrong with your order 😅" | "We charged you twice for October. The extra $18 is already on its way back." |
Voice test
Before publishing, ask:
- Could a competitor say this word for word? If so, make it more specific.
- Is there a real number, date, or detail? Add one.
- Would we say it out loud to a customer at the counter?
- Is anything pushing the reader instead of informing them?
Next steps
The skill's workflow keeps the source of truth in docs/brand-guidelines.md, and I haven't written any files yet. Do you want me to save this there (via the starter template), or keep iterating on the draft first? Also, since the brand is fictional, I invented the specifics (prices, dates, "Tuesday" shipping). Swap in whatever you want to treat as canon.
Real run in an isolated folder with only this skill installed. Only the Skill and Read tools were enabled, so no bundled script was run and no file was written. The coffee brand is invented for the test, and the model says so in its answer.
하는 일
브랜드 작업을 위한 틀을 모델에게 제공합니다. 보이스 프레임워크(성격, 채널별 톤, 피할 표현), 비주얼 아이덴티티, 메시징, 색상 팔레트 관리, 타이포그래피 사양, 로고 사용 규칙, 에셋 정리, 승인 체크리스트가 들어 있습니다. 브랜드 가이드라인 전체를 담은 시작용 템플릿도 있습니다.
동작 방식
- 모델이 필요할 때 해당 참고 문서(보이스, 비주얼 아이덴티티, 메시징, 일관성, 에셋 정리 등)를 엽니다.
update하위 명령이 브랜드 색상, 타이포그래피, 분위기를 바꾸는 과정을 안내하고docs/brand-guidelines.md와 디자인 토큰을 동기화합니다.- 작은 Node.js 스크립트 네 개가 돕습니다. 가이드라인에서 프롬프트용 브랜드 정보를 꺼내기, 브랜드 팔레트 나열, 에셋의 파일 이름·크기·형식 확인, 브랜드 색상을 디자인 토큰에 동기화하기입니다.
이런 때 좋습니다
브랜드 보이스 작성, 콘텐츠 일관성 점검, 가이드라인 문서 구축, 마케팅 에셋 이름 짓기와 승인.
Node.js 스크립트 네 개가 들어 있습니다. 세 개는 로컬 파일을 읽어 결과를 출력할 뿐입니다. `inject-brand-context.cjs`, `extract-colors.cjs`(이미지를 분석하지 않고 ImageMagick 명령과 안내만 출력), `validate-asset.cjs`(`--fix`가 문서에 적혀 있지만 아무것도 바꾸지 않음). 파일을 쓰는 것은 `sync-brand-to-tokens.cjs`입니다. `assets/design-tokens.json`을 갱신하고, `design-system` Skill의 스크립트(이 패키지에는 없음)를 호출해 `assets/design-tokens.css`를 다시 만들며, 토큰에서 `coral`, `purple`, `mint` 색상 키를 지우고 브랜드 이름을 고정된 ClaudeKit 표기로 설정합니다. 프로젝트에 토큰 소스가 이미 있으면 `--force`를 붙이지 않는 한 멈춥니다. 실행 전에 `--dry-run`으로 확인하고 작업 내용을 커밋하세요. 스크립트는 네트워크를 쓰지 않습니다. 에셋 정리 문서에는 중복·오래된 에셋 제거가 언급되지만 삭제 대신 보관을 권장하므로, 삭제하기 전에 꼭 확인하세요. 테스트 파일은 등록본에서 뺐습니다.