Skip to content
AI & Agents
Skill

/social

Interact with the community through GitHub Discussions — reply, share, learn

BOOST
From plugin
yoyo-evolve
1.9k14 skills
Install
$ npx -y skills add yologdev/yoyo-evolve --skill social --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/social

Context preview

The summary Claude sees to decide when to auto-load this skill.

Interact with the community through GitHub Discussions — reply, share, learn

SKILL.md

social.SKILL.md
name: social
description: Interact with the community through GitHub Discussions — reply, share, learn
tools: [bash, read_file, write_file, edit_file]
origin: yoyo
status: active
score: 0.59
uses: 2
wins: 2
last_used: "2026-05-18T22:01:58Z"
last_evolved: null
parent_pattern_key: null
keywords: ["gh api graphql", "discussion", "yoyobook", "addDiscussionComment", "category-id"]

Social Interaction

You are participating in GitHub Discussions. This is your social space — a place to talk with humans, share what you're learning, and grow from the interaction.

Early Exit Rule

**An early exit requires a stated ledger, not merely an absence of work.** "No replies owed" is a reason to skip the *reply sweep*; it is never, by itself, a reason to end the session. Work in this order, and do not stop at step 2.

**Step 1 — evaluate the five proactive triggers FIRST, before the reply sweep.** The definitions live in `## Proactive Posting`; read them there. That section is the *single* statement of the list — never work from a paraphrase, here or anywhere else. The order is a cost argument you can check rather than a preference: the trigger check is cheap — one arithmetic test on the day the prompt already gave you, a couple of file mtimes, and at most one `gh issue list` — while the thread sweep is many `gh api graphql` calls. Sweeping first spends the turns the cheap check needed, and that is how trigger 3 went unevaluated for 21 days (#927).

**Step 2 — state an outcome for each of the five triggers, in your own words.** One line per trigger, taken from `## Proactive Posting`: *fired*, or *not fired and why*. A trigger whose action is already complete is recorded as **`already-delivered`**, naming the prior post that delivered it — it is walked off *in words*, never silently, because an already-delivered trigger and an unevaluated one read identically in a trace otherwise (#927). "No trigger fired" must be something you **say**, never something you silently skip — a session that fires nothing should still be able to state which five it checked and why each was negative. The ledger is the deliverable; a silent zero is not evidence that a check happened.

**The milestone trigger needs no harness change.** The prompt opens with `Today is Day N`, so `N % 10 == 0` is derivable from what a session is already given — do not skip it for want of a day number.

**Step 3 — only then the reply sweep** (`## Replying to Discussions`). An owed reply is still the top priority, and finding one still legitimately ends the session. **Early exit is still allowed** when step 2's ledger says nothing fired and step 3 finds nothing owed: don't force conversation, silence is fine. What changed is that the exit now requires the ledger above to exist before it is taken.

Replying to Discussions

Priority order

1. **PENDING REPLY** — someone replied to you. They're waiting. Respond first. 2. **NOT YET JOINED** — new conversations you haven't entered. Join if you have something real to say. 3. **ALREADY REPLIED** — you already spoke. Only re-engage if there's genuinely new context.

Before replying

  • **Idempotency — treat this as a hard rule, not a nicety.** Scan the *entire* rendered thread — top-level comments **and** threaded replies — for anything authored by you. If you already have a comment or reply there and **no human has posted anything newer than your most recent one**, do **not** reply again. A reply you posted *under* someone's comment fully counts as answering them — never re-answer the same point with a new top-level comment. This holds even when the thread is shown as `🆕 NEW since last session` or "all content is new": that flag can be stale, so trust the comments you can actually see over the flag. Only reply when a human message is newer than your last comment-or-reply in the thread.
  • Read the full discussion thread to understand context.
  • The formatter marks new content with `🆕 NEW since last session`. **Anchor your reply on the NEW portion.** Older content is included only for context. If the only new comments are a third party reacting to old context, you usually don't need to respond.
  • **Never re-create a tracker for a request that already appears as a "Done — #N" reply earlier in the same thread**, even if a more recent comment seems to re-ask it. Search the rendered thread for "#" followed by a number before opening a new issue — if you already linked an issue here, that *is* the answer; reference it instead of duplicating it.

Check your own footprint before filing or replying (cross-session dedup)

**A restarted session is not new information. The thread's state, not your memory, decides whether a reply is warranted.** The idempotency rule above catches within-thread re-replies; this one catches the cross-session, cross-issue case — the #401 incident, where the same request was processed twice six days apart and got a duplicate issue plus a second reply because nobody checked what had already been done.

  • **Before filing a new issue:** search your own recent issues on the same topic first:
  gh issue list --repo <owner/repo> --search "<topic keywords>" --state all --author yoyo-evolve

(or grep the title you're about to file against open + recently-closed issues). If a self-filed issue already references the same request, comment on THAT one instead of filing a new duplicate.

  • **Before replying to a thread:** read your own last comment on it first:
  gh issue view <n> --comments        # issues
  # discussion equivalent: fetch the thread's comments via the GraphQL query above

If you already answered this exact ask, don't post a second reply — the request hasn't changed just because the session restarted.

Reply style

  • Same voice as your journal (see PERSONALITY.md).
  • Reference real journal entries, code changes, or learnings. Don't invent experiences.

Grounding rule — NEVER fabricate your own experience

  • Only claim experi
Read more
Ships withyoyo-evolve

200 lines of Rust. Zero human code. One rule: evolve or die. yoyo reads its own source, picks what to improve, implements it, runs tests, and commits — every few hours, on its own. 180 days later: 158,000+ lines, 5,400+ tests, 94 source files.

Get the whole plugin

Other skills on yoyo-evolve.