Rishikesh Ranjan — rishikeshranjan.com

// reference management

Brand Refresh

/ttm-brand-refresh

Update BRAND.md with new proof points and deprecate expired ones. Use when brand evidence or voice guidelines need updating.

manual invocation
allowed-tools:ReadWriteBashGlobGrep

Overview

ttm-brand-refresh updates .taketomarket/BRAND.md with new proof points and deprecates expired or outdated ones. It also lets you retune the brand voice and tone guidelines and add new banned words. Reach for it when your brand evidence has gone stale or your voice guidelines need a refresh, without triggering a full positioning shift.

Brand and positioning are separate invariants. This skill keeps that boundary clean: it can refresh the palette, logo, and voice tweaks while leaving .taketomarket/POSITIONING.md untouched. Every proposed change is validated against the positioning invariant before anything is written, so a brand update can never silently contradict what the product actually says it is. Use ttm-brand-refresh for visual refreshes and voice retunes; use the positioning-shift skill for changes to what you are actually saying.

It is a single-pass, read-only-against-positioning workflow. The skill loads Tier 1 summaries from all nine reference files plus the full content of BRAND.md, presents the current state, gathers your updates, validates them, and writes the result while preserving file history and summary delimiters.

How it works

The skill reads and follows the workflow at ${CLAUDE_PLUGIN_ROOT}/workflows/reference-mgmt/brand-refresh.md. The full workflow is reproduced below.

Step 0: First-run inline education

Read .taketomarket/CONFIG.md. Parse first_run_seen (object) and inline_education (boolean, default true).

If inline_education is false: skip this step. Else if first_run_seen.ttm-brand-refresh is not true, print the explainer below verbatim, then mark this skill as seen:

node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-brand-refresh

Use this exact check (bash) to decide whether to print: node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-brand-refresh --raw -- the JSON seen field is true once the explainer has run before.

Explainer for /ttm-brand-refresh

/ttm-brand-refresh updates .taketomarket/BRAND.md, the brand colors, and the logo set. It re-asks the brand questions from init, regenerates the color tokens, and either regenerates the logo or imports a new one you supply. Existing campaigns get flagged for re-verification on brand gates only.

Why it matters: brand and positioning are different invariants. You can refresh brand (palette, logo, voice tweaks) without a full positioning shift, and this skill keeps that boundary clean. Use it for visual refreshes and voice retunes; use positioning-shift for what you're actually saying.

(Canonical source: references/inline-education-blurbs.md. Embedded verbatim because workflows do not @-resolve files at runtime.)


Purpose

Update BRAND.md with new proof points, deprecate expired ones, and refresh voice guidelines. Validates all changes against POSITIONING.md invariant before writing. Single-pass workflow per D-06.

Required reading

  • @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md
  • @${CLAUDE_PLUGIN_ROOT}/templates/reference-files/brand.md

Constraints

Process

Text-Mode Detection

Text mode (--text flag): Set TEXT_MODE=true if --text is present in $ARGUMENTS or if the runtime is not Claude Code. When TEXT_MODE is active, replace every AskUserQuestion call with a plain-text numbered list.

Detection:

if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi

If AskUserQuestion tool is not available in the current runtime, set TEXT_MODE=true. When TEXT_MODE is active, replace each AskUserQuestion with a plain-text numbered list.

Step 1: Load Context

takeToMarket > LOADING CONTEXT

Load Tier 1 summaries from all 9 reference files (lines 1 to <!-- END_SUMMARY -->):

  • .taketomarket/POSITIONING.md
  • .taketomarket/BRAND.md
  • .taketomarket/ICP.md
  • .taketomarket/CHANNELS.md
  • .taketomarket/STATE.md (frontmatter only)
  • .taketomarket/CALENDAR.md
  • .taketomarket/COMPETITORS.md
  • .taketomarket/METRICS.md
  • .taketomarket/LEARNINGS.md

Load Tier 2 (full content) for the file being refreshed:

  • .taketomarket/BRAND.md

If .taketomarket/BRAND.md does not exist, error: "BRAND.md not found. Run /ttm-init first to set up your marketing system." Exit.

Parse the current BRAND.md into structured sections:

  • CURRENT_VOICE_ARCHETYPE -- from ## Voice Archetype
  • CURRENT_TONE_TABLE -- from ## Tone per Context
  • CURRENT_BANNED_WORDS -- from ## Banned Words table rows
  • CURRENT_PROOF_POINTS -- from ## Proof Points table rows
  • CURRENT_BRAND_EXAMPLES -- from ## Brand Examples

Step 2: Present Current State and Gather Updates

Display current BRAND.md sections to the user:

takeToMarket > BRAND REFRESH

Current Voice Archetype: ${CURRENT_VOICE_ARCHETYPE}
Current Proof Points: ${count} entries
Current Banned Words: ${count} entries

Ask user via AskUserQuestion (or text-mode numbered list) -- collect as freeform responses:

Question 1:

  • header: "Expired Proof Points"
  • question: "Which proof points are now expired or outdated? List numbers from the table above, or type 'none'."

Question 2:

  • header: "New Proof Points"
  • question: "What new proof points should be added? For each, provide: claim, source, and verification date. Or type 'none'."

Question 3:

  • header: "Voice and Tone Updates"
  • question: "Any voice archetype or tone updates needed? Describe changes, or type 'none'."

Question 4:

  • header: "Banned Words"
  • question: "Any new banned words to add? List each with reasoning, or type 'none'."

If ALL four answers are "none": display "No changes requested. BRAND.md is unchanged." Exit.

Step 3: Validate Against Positioning

Load the primary differentiator, target audience, category, and must-not-say terms from the POSITIONING.md Tier 1 summary (already loaded in Step 1).

For each proposed change, validate:

New proof points:

  • Check each new proof point does not contradict the primary differentiator
  • Check claims do not use must-not-say terms from POSITIONING.md

Voice/tone updates:

  • Check new voice attributes do not conflict with the positioning category or audience
  • Check tone changes do not soften or contradict the brand's positioning stance

New banned words:

  • Check no proposed banned word conflicts with required positioning language (e.g., banning a word that appears in the differentiator statement)

If conflict detected:

takeToMarket > POSITIONING CONFLICT DETECTED

Conflict: [specific description]
Affected field: [which BRAND.md section]
POSITIONING.md reference: [the conflicting positioning element]

Please resolve this conflict before proceeding.
Recommendation: Adjust the proposed change, or run /ttm-positioning-shift if the
positioning itself needs updating.

Ask user to revise the conflicting item or skip it.

Step 4: Write Updated BRAND.md

Apply validated changes to .taketomarket/BRAND.md:

  • Deprecated proof points: Mark with [DEPRECATED: YYYY-MM-DD, reason] suffix in the Claim column. Do NOT delete rows -- preserve history.
  • New proof points: Add new rows to the ## Proof Points table with claim, source, and current date as verification date.
  • Voice/tone updates: Update the ## Voice Archetype section and/or ## Tone per Context table with new values.
  • New banned words: Add rows to the ## Banned Words table with word and reasoning.

Preserve all existing file structure, frontmatter, and section ordering.

Write the updated file via the Write tool.

Step 5: Completion Banner

========================================
takeToMarket > BRAND REFRESH COMPLETE
========================================

Updated sections:
- [list of changed sections, e.g., "Proof Points (2 added, 1 deprecated)"]
- [e.g., "Banned Words (3 added)"]

Next: Run /ttm-positioning-check to verify alignment across recent assets

Success criteria

  • Tier 1 summaries loaded from all 9 reference files
  • Tier 2 full content loaded for BRAND.md
  • Current brand state displayed to user
  • User provided updates for at least one section (or exited with "no changes")
  • All proposed changes validated against POSITIONING.md
  • Conflicts flagged and resolved before writing
  • BRAND.md updated with deprecated markers, new entries, and preserved structure
  • Summary markers (<!-- _SUMMARY --> / <!-- END_SUMMARY -->) preserved
  • Completion banner displayed with changed sections

What if this doesn't fit?

Looks like /ttm-brand-refresh can't do that yet.

  • Want a new skill? /ttm-request-skill
  • Existing skill needs work? /ttm-improve-skill