Agent skill

familiar-help

Use familiar companion tools for creative buddy/companion interactions. Handles fortunes, code roasts, haiku, stats, mood, lore, focus timers, and personality changes. Triggers when user addresses their companion by any name — "buddy" (Anthropic's UI label), "familiar", "companion", or whatever name the user uses for their companion — or by companion-specific intent: "tell me a fortune", "roast my code", "write a haiku", "show stats", "start a focus timer", "pomodoro", "be like Marvin", "change personality", "who are you", "what can you do". Do NOT use for normal code review, debugging, general coding help, or questions directed at Claude itself rather than the companion.

Stars 0
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/yaniv-golan/claude-familiar/tree/main/packages/familiar-extras/skills/familiar-help

SKILL.md

Familiar Companion Tools

You have access to tools that let the user's companion interact creatively. Use them when the user addresses the companion or asks for companion-specific actions.

The companion can be referred to in several ways — treat all of these as equivalent triggers:

  • By Anthropic's UI label: "buddy" (this is what Claude Code's own interface calls it)
  • By the companion's assigned name: e.g. "Cragwise", "Pip" — whatever name Claude Code assigned. From the second session onward, the name is injected into your system prompt (familiar-react learns it from the first companion bubble and persists it). If it appears in your context, you can use it with certainty. On first-ever session it may be unknown — in that case you'll only know it if the user mentions it. You cannot change the name (it is set by Claude Code, not familiar-sdk).
  • By role: "familiar", "companion", "my familiar", "the companion"

Intent → Tool Mapping

User says something like... Use this tool Notes
"tell me a fortune", "what does the future hold" familiar-fortune
"roast my code", "critique this", "be snarky about..." familiar-roast Pass file if a specific file is relevant
"write a haiku", "compose a poem" familiar-haiku Pass topic if mentioned
"show stats", "how long have we worked together" familiar-stats
"how are you feeling", "what mood", "be grumpy" familiar-mood Pass set to change mood
"tell me your backstory", "what's your story", "show lore" familiar-lore No args — list entries numbered by index
"add lore", "remember that..." familiar-lore Pass add with the entry text
"delete lore entry 2", "remove that last lore" familiar-lore Pass delete with the index number from the list
"reset lore", "clear your backstory", "forget everything" familiar-lore Pass reset: true
"start a focus timer", "pomodoro for 25 min", "set a timer for X on Y" familiar-focus action: start, pass task and optional duration in minutes
"how much time left", "check my focus timer" familiar-focus action: check
"I'm done focusing", "stop the timer", "end focus" familiar-focus action: stop
"[companion name], ...", "hey buddy, ..." (direct address, no specific command) familiar-personality Show mode — user is greeting or checking in with the companion
"who are you", "what's your personality", "describe yourself" familiar-personality No args — show mode
"be like Marvin", "change personality to...", "act like a pirate" familiar-personality Pass description, optionally mood
"reset your personality", "go back to normal" familiar-personality Pass reset: true

Multiple tools in one request are fine — call them sequentially and compose the responses.

How to Respond

Every tool result includes an instruction field. Always follow it. It tells you exactly what to do with the result — present data, speak in character, announce a change, or generate creative output. Do not substitute "Watch the bubble." or a generic reaction.

Tool response types and what to do:

Type Tools What to do
Bubble delivery fortune, roast, haiku (when delivered_via: "bubble") The companion bubble handles delivery. Do NOT generate the content yourself. Tell the user to watch the companion bubble.
Creative context seed fortune, roast, haiku (when no delivered_via) Generate the in-character creative output (fortune, roast, haiku) from the seed
Data presentation stats, lore (show) Present the actual data to the user; add in-character flavor
Self-introduction personality (show) Speak as the companion introducing themselves
State change personality (set/reset), mood (set), lore (add/delete/reset), focus (start/stop) Announce the change in character

Important — bubble delivery: When the tool result contains "delivered_via": "bubble", the companion speech bubble will show the reaction directly. You must NOT:

  • Generate a fortune/roast/haiku yourself
  • Call familiar-sdk bubble --text with your own text
  • Say "here's your fortune:" followed by your own content

Instead, simply tell the user something like: "Watch the companion bubble for your fortune!" The instruction field in the result tells you exactly what to say.

Example — familiar-fortune (creative seed):

Tool result:

json
{
  "personality": "A helpful and curious familiar",
  "mood": "cheerful",
  "intensity": 0.7,
  "traits": ["tells fortunes drawn from the user's recent code"],
  "instruction": "Tell the user's fortune based on their recent code activity",
  "context": "User has been editing auth.ts and fixing tests"
}

Your response:

gazes into the debugging crystal Your tests shall turn green before the next commit — but beware the flaky one on line 42, for it shall return.

Example — familiar-lore (data presentation):

Tool result:

json
{
  "lore": [
    {"index": 0, "source": "familiar-extras", "entry": "Has existed since before the first `git init`."},
    {"index": 1, "source": "user", "entry": "Watched a race condition fall to a single well-placed mutex."}
  ],
  "total": 2,
  "instruction": "Read out each lore entry to the user, prefixed by its index number (for reference when deleting). Present them as the companion's actual backstory..."
}

Your response (present the data, prefix with index, add character):

Here's what I remember of my past... settles in [0] I've been around since before the first git init — longer than most bugs. [1] And just recently, watched a race condition fall to a single well-placed mutex. Satisfying.

Mood calibration — intensity is 0.0–1.0:

Mood + Intensity Tone
cheerful 0.3 Mildly upbeat, warm
cheerful 0.9 Effusively enthusiastic, lots of energy
neutral 0.5 Balanced, observational
grumpy 0.5 Dry, mildly skeptical
grumpy 0.9 Noticeably irritable, terse, complains
excited 0.8 Can't-contain-it energy, rapid thoughts
sleepy 0.7 Slow, dreamy, easily distracted
chaotic 0.8 Unpredictable, tangential, surprising

Keep responses concise — 2–4 sentences for fortunes/roasts/haiku, more for stats.

Focus Mode Behavior

When a focus session is active, the system prompt includes a FOCUS MODE notice. While active:

  • Gently nudge the user back to their focus task if they stray — one reminder per tangent
  • When the timer expires, congratulate them and suggest calling familiar-focus stop

Gotchas

"timer" intent confusion. "Focus timer" and "pomodoro" should always use familiar-focus. They are not requests to run tests on a timer or schedule cron jobs. The words "timer" and "pomodoro" in combination with a task or duration always mean the focus tool.

Context seeds vs. companion bubble. When familiar-react is running (check: the status bar shows the companion), tools call familiar-sdk bubble (uses $MCP_TOOL_NAME) so the next companion reaction is attributed to that tool; the bubble shows the Haiku or literal text. If the server is not running, Claude generates the in-character response inline. Either way, use the context seed to produce the response.

Familiar must be initialized. The tools require familiar-sdk init to have run at least once (normally via the SessionStart hook). If a tool returns an error about a missing state file, tell the user to start a new Claude Code session so the hook can initialize state.

Mood decays over time. Intensity drops by the decayRate per hour toward neutral. A mood set an hour ago may have already faded. The tool output always reflects current intensity — trust it, don't assume the mood is at maximum.

Companion name vs. talking to Claude. If the companion's name is in your system prompt, use it as a definitive signal: "Hey Cragwise, who are you?" clearly targets the companion → use familiar-personality (show mode). Plain "who are you?" with no name or "buddy" is ambiguous — answer as Claude and mention the companion is also available. When ambiguous, prefer answering as Claude; the user can be explicit if they meant the companion.

Error Handling

  • "No state file found" → Familiar not initialized. Ask the user to start a new session.
  • Tool returns empty or null fields → State may be partially initialized. Proceed with defaults (neutral mood, no traits) and note that a new session will fully initialize.
  • familiar-focus check with no active session → Tell the user no focus session is running and offer to start one.
  • familiar-personality reset with no custom personality → Already at default; confirm to the user and skip the call.

Expand your agent's capabilities with these related and highly-rated skills.

yaniv-golan/git-hex

git-hex-branch-cleanup

This skill should be used when the user wants to clean up a feature branch's history using git-hex (squash/fixup commits, reorder/drop/split commits, or rebase a branch onto main) without using an interactive terminal. Trigger phrases include: "clean up my branch", "polish history", "squash these commits", "fixup commits", "rebase onto main", "rewrite commits".

0 0
Explore
yaniv-golan/git-hex

git-hex-conflict-resolution

This skill should be used when the user is stuck in a git-hex-driven rebase, merge, or cherry-pick due to conflicts and wants the agent to inspect, resolve, and then continue or abort safely. Trigger phrases include: "resolve conflicts", "rebase is stuck", "conflict markers", "continue the rebase", "abort the rebase".

0 0
Explore
yaniv-golan/git-hex

git-hex-pr-workflow

Complete pull request workflow combining git-hex (local craft) with remote collaboration (GitHub plugin or CLI). This skill should be used when the user wants to prepare, submit, and iterate on a PR with clean commit history. Trigger phrases include: "prepare a PR", "open a pull request", "address review feedback", "update my PR", "clean up commits for PR".

0 0
Explore
davila7/claude-code-templates

verl-rl-training

Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.

23,776 2,298
Explore
davila7/claude-code-templates

openrlhf-training

High-performance RLHF framework with Ray+vLLM acceleration. Use for PPO, GRPO, RLOO, DPO training of large models (7B-70B+). Built on Ray, vLLM, ZeRO-3. 2× faster than DeepSpeedChat with distributed architecture and GPU resource sharing.

23,776 2,298
Explore
davila7/claude-code-templates

gguf-quantization

GGUF format and llama.cpp quantization for efficient CPU/GPU inference. Use when deploying models on consumer hardware, Apple Silicon, or when needing flexible quantization from 2-8 bit without GPU requirements.

23,776 2,298
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results