tonydzi/second-brain-starter-kit/share-fix

Claude Code and agent skill by tonydzi/second-brain-starter-kit

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Turn a fix you made for a whole class of bugs into help for others: reverse-search GitHub for people hitting the same symptom, pick the 3-5 best live threads and post one tailored answer or gist each, no copy-paste fan-out. Use after a verified class fix. Triggers: /share-fix, /sf, share the fix.

Install

npx vskill@latest install tonydzi/second-brain-starter-kit/share-fix

SKILL.md

/share-fix — 🌍 починил у себя → сразу раздай миру

Канон: Библия reglament-pochinil-u-sebya-srazu-razday-miru + память fixed-it-share-it-with-the-world + CLAUDE.md §4.7. Логика Антона: в момент починки у нас в руках лучший поисковый ключ на свете — дословный симптом; никакой «робот-сканер всего GitHub» не сравнится с реверс-поиском того, кто только что дебажил. Поэтому раздача = ритуал в момент фикса, не фоновый сканер.

Шаг 0-бис — источник кандидатов: очередь (anton 01.09)

Кроме «только что починил в руках», кандидаты приходят из очереди $OBSIDIAN_VAULT/_outreach/share_fix_queue.jsonl — её наполняет /retro Step 4🌍 (судья), а раздаёт ночная рутина share-fix-daily (хаб, ≤3 pending за прогон, полный ритуал ниже на каждого; после раздачи строка кандидата дополняется status:done+threads). Формат строки: added·from·artifact·queries[дословные симптом-запросы]·numbers·status.

⛔ ТЕРМИНАЛЬНЫХ СТАТУСОВ ЧЕТЫРЕ, НЕ ОДИН (08.09.2026, 3-й датированный случай share-fix-selector-drift-task-vs-engine): раздача закрывает строку не только как done — ⚪ пусто кладётся как dry, ⛔ непереносимо как skip (VALID_STATUS движка). Селектор «status != done» поэтому поднимает УЖЕ отработанные строки: замер 08.09 — 40 «не-done», из них 17 закрыты вердиктом, и первые три FIFO были ровно такими. Открытая строка = статус НЕ в {done, dry, skip} И без даты done (строка вовсе без поля status, как писал casebook-drip, тоже открытая — наивный == pending её теряет).

⛔ ПРИПАРКОВАННУЮ СТРОКУ НЕ БЕРЁМ (замер 07.09, 1-й датированный случай ochered-ne-uvazhaet-pole-parkovki-revisit): строка может нести revisit: <дата> — это парковка до урожая, а не обычный pending, и ни текст рутины, ни share_fix_queue.py её не отличают. Перед взятием кандидата: revisit в будущем ⇒ пропустить, статус не трогать, взять следующий FIFO. Иначе в мир уезжают недоказанные числа (07.09 так чуть не ушёл A/B с n=1 за сутки до урожая). Популяцию очереди читай прибором (share_fix_queue.py status), а не числом из текста задачи — оно стареет молча (класс share-fix-selector-drift-task-vs-engine, 2 случая).

Шаг 0 — порог (2 булевых, оба ДА, иначе честный ⛔)

  1. Переносимость: чужой человек может воспроизвести наш симптом БЕЗ наших внутренностей (наших скриптов, нашей инфры, наших аккаунтов)? Одноразовый глюк самоделки миру не нужен.
  2. Чистота: в раздаваемом нет секретов/приватного/внутренних имён (аккаунты, задачи, пути с личным)? Скрипт для мира = НОВЫЙ чистый файл на английском, не внутренняя кнопка. Леак-скан глазами обязателен.

Шаг 0-бис — САМОЕ ПЕРВОЕ: СВОЙ СОБСТВЕННЫЙ ТИКЕТ, в котором мы уже заявили дефект (замер 23.09.2026)

Раньше, чем своя сеть репо, и намного раньше чужих тредов, стоит вопрос: мы сами где-то публично утверждали этот дефект? Если да, то там уже сидят люди с ровно этой болью, они пришли по своей воле, и наш артефакт обязан лежать ПОД нашим же утверждением. Утверждение о дефекте без своего детерминированного repro недоделано.

Это НЕ раздача по чужим тредам (та измерена мёртвой: 3 коммента, 19 суток, 0 переходов) — это завершение своей собственной заявки, и оно бесплатно и постоянно.

gh api repos/<owner>/<repo>/issues/<N> --jq '.body' | grep -c <artifact-slug>
gh api repos/<owner>/<repo>/issues/<N>/comments --paginate --jq '[.[]|select(.body|test("<artifact-slug>"))]|length'

⚠️ `--paginate` ОБЯЗАТЕЛЕН: без него gh отдаёт первые 30 комментов и печатает уверенный 0 на длинном треде. 23.09 именно так проверка «стоит ли наша ссылка» соврала на треде с 51 комментом.

ЗАМЕР, ПОРОДИВШИЙ ШАГ (23.09.2026, casebook-drip-daily): у публичного касбука были 48/48 внутренних ссылок, строка в витрине, посадочная страница с запускаемой командой и два поста в FB — а шесть наших собственных upstream-заявок за 19 суток не ссылались на него ни разу, ни в теле, ни в комментах. Среди них наш же тикет про ту самую поломку, у которой в касбуке лежит готовый repro, и чужой тред с 51 комментом, где мы стояли с 24.08. Сначала закрой это, потом трать время на поиск незнакомцев. Границы: закрытый тикет и мелкие треды (<7 комментов, 0 реакций) не трогаем — там аудитории нет, и это повторение мёртвой тактики.

Шаг 0-тер — ПОТОМ СВОЯ СЕТЬ РЕПО, и только затем чужие треды (замер 14.09.2026)

Раздача наружу стоит времени и живёт один день; ссылка внутри нашей же сети бесплатна и стоит вечно. Поэтому до реверс-поиска проверь, ссылаются ли на артефакт НАШИ репо:

bash
python ~/.claude/scripts/ecosystem_footer.py # сухой прогон: у кого нет блока карты

Блок «🧩 One piece of a working system» с соседями по слою пишет ecosystem_footer.py по карте LAYERS. Репо, которого в карте НЕТ, невидимо внутри собственной сети: ни футера у него, ни упоминания у остальных. Нет в карте → допиши слой (governance · memory · gates · fleet · connectors · in public) и прогони --apply, прогнав перед этим _test_ecosystem_footer.py.

⛔ ТЕСТ КРАСНЫЙ → `--apply` НЕ ЗВАТЬ (замер 21.09.2026, share-fix-daily): сухой прогон просил блок в 25 публичных README, а _test_ecosystem_footer.py был красным на 2 проверках (5d безымянных 3, 5e касбука нет в карте). Раскатка 25 публичных репо с красного движка = отказ по общей причине (§7.3-бис канарейка), и починка 14.09 класс не закрыла. На красном: строка в журнал классов (selfheal.py journal --class ecosystem-footer-map-leaves-repos-unnamed), вердикт ⚪ по шагу 0-тер, дальше по своему классу. Разовая проверка одного репо — --repo NAME, она канарейка и разрешена.

⭐ СПЕРВА ОЦЕНИ СТОИМОСТЬ ПОЧИНКИ ДВИЖКА, ПОТОМ ЖУРНАЛЬ (замер 23.09.2026, Mac16): строка в журнал — это про класс, который дорого чинить сейчас; она не индульгенция на то, чтобы обходить красный тест бесконечно. 23.09 движок стоял красным ТРЕТИЙ прогон подряд (21.09, 23.09 хаб, 23.09 Mac16), а починка заняла две правки: круговой выбор соседей вместо плоского [:3] + касбук в карту LAYERS. Правило: красный тест → посмотри, что именно он краснит; починка в пределах одной функции и одного словаря делается В ТОМ ЖЕ заходе (канарейка на одном репо → verify чтением README с GitHub → остальные), и только если корень дороже — журналь и ставь ⚪.

ПОЧЕМУ ЭТО ПЕРВЫМ. Касбук agent-control-plane-casebook раздавался наружу с 04.09: 3 коммента в живых чужих тредах, два тизера в наши TG-каналы. Через 10 суток — views_14d=3, uniques=2, referrers = только l.facebook.com, с github.com РОВНО НОЛЬ. Причина оказалась не в тредах и не в текстах: касбука не было в карте LAYERS, и ни один из 47 наших репо на него не ссылался — переходить было неоткуда. Побочно прибор назвал ещё 6 репо, которых не называл никто (agent-runtime-integrity-bench, always-loaded-diet, claw-retro, cofounder, oss-publish, verified-ops-starter): соседи брались плоским срезом [:3] по порядку словаря. Починено 14.09 круговым выбором.

Витрина tonydzi/tonydzi у генератора в SKIP — её правь отдельно через Contents API с трейлерами §4.9; раздел «🔨 What I'm building right now» и есть парадный вход.

Шаг 1 — реверс-поиск по ДОСЛОВНОМУ симптому (2 минуты)

bash
gh api -X GET search/issues -f q='<ключевые слова> in:title updated:>ГГГГ-ММ-ДД' -f per_page=10 \
--jq '.items[] | "\(.state[:1]) \(.updated_at[:10]) c\(.comments) \(.html_url) | \(.title[:90])"'

⛔ `gh search issues "<много слов>"` ОДНИМ аргументом = ЛОЖНЫЙ НОЛЬ (замер 14.09.2026, Mac16): gh оборачивает всю строку в кавычки как фразу (в URL %5C%22), 13 запросов подряд дали пусто, те же слова через gh api search/issues — живые треды. Сортировка updated топит релевантное в бот-шуме — без --sort (по релевантности) + in:title. Между запросами sleep 8, иначе secondary rate limit 403. Пробуй 2-3 формулировки (код ошибки 0x…, статус Modified, NeedsRemediation, фраза из диалога). Пусто везде → вердикт ⚪ с названным запросом, конец.

⛔ `state:open` В КАЖДЫЙ ЗАПРОС (замер 19.09.2026, Mac16): без него выдача уходит в архив — первый круг из 9 запросов дал 13 попаданий, из которых ЖИВОЕ было ровно одно, остальные closed за 2025-2026. Шаг 2 требует ЖИВЫХ тредов, значит фильтр ставится на Шаге 1, а не глазами постфактум; цена промаха — лишний круг поиска и съеденная квота search (30/мин). Строка: -f q='<слова> state:open'.

⛔ `--sort comments` ВМЕСТЕ С `repo:` ВНУТРИ СТРОКИ ЗАПРОСА = ПОСТОЯННЫЙ МУСОР (замер 29.09.2026, Mac16, share-fix-daily, 1-й датированный случай gh-search-sort-comments-with-inline-repo-returns-constant-garbage): шесть РАЗНЫХ запросов подряд вернули один и тот же список (melissabess/test#1, nandhanda/heyyy#1, все 💬2500, ни одного из целевых репо) — строка запроса молча игнорируется, а выдача выглядит как честный поиск. Рабочая форма: репо задавать флагами --repo owner/name (повторять на каждый репо), сортировку не трогать (релевантность) либо --sort updated. ⚠️ В zsh флаги подаются МАССИВОМ: REPOS=(--repo a/b --repo c/d) и разворачивать "${REPOS[@]}" — голое $REPOS zsh на слова НЕ разбивает (в отличие от bash), gh отвечает unknown flag и прогон теряет круг. ⚠️ ТО ЖЕ САМОЕ УБИВАЕТ `set -- $VAR` (замер 03.10.2026, share-fix-daily Mac16, 2-й датированный случай класса zsh-does-not-word-split-variables): for T in "owner/repo N"; do set -- $T; R=$1; N=$2 оставляет R="owner/repo N", N пустым, и gh api repos/$R/issues/$N отвечает HTTP 404 Not Found — выдача читается как «треда не существует», хотя все четыре треда живые. Форма: массив T=(owner/repo N) либо ${=T}, либо передавать два аргумента функции.

⛔ ГОЛОЕ ЧИСЛО В ЗАПРОСЕ = ЛОЖНЫЙ НОЛЬ (замер 08.09.2026, 1-й датированный случай gh-search-golye-chisla-chitayutsya-kak-nomer-issue): gh search issues "gemini cli valid license 3501" возвращает issue с номером 3501 из случайных репо (BusinessCentral, WordPress/Learn…), а не текстовый матч — выдача выглядит как честный поиск и читается как «фронт пуст». Так строка очереди 03.09 получила вердикт «пусто, 3 формулировки», а поиск ТОЧНОЙ ФРАЗОЙ '"valid license of this product"' в тот же вечер дал 4 живых треда, крупнейший на 45 комментов. Правило: ищи фразой в кавычках без чисел, номер ошибки добавляй словами («error 3501» отдельным прогоном); длинная фраза из 6+ слов тоже отдаёт пусто — GitHub ANDит токены, дели на 1-3 ключевых слова + --repo.

✅ ДОМЕН-ГЕЙТ: дверь жива. (20.09.2026) ~/.claude/registry/github-universe/targets.json на месте, github_targets.py --top/--check работают — цели берём из них, domain_why пишем в вердикт. Если прибор всё же выйдет exit 2 — применяй domain.json руками и НАЗОВИ это в вердикте; тихо считать «гейта нет» ⛔. Статус двери — сам по себе claim: проверяй --top 5, а не пересказывай чужой вердикт.

⛔ `domain=off` ПО ПУСТОМУ ИЛИ МАРКЕТИНГОВОМУ ОПИСАНИЮ — НЕ ПРИГОВОР, НО ТРЕБУЕТ НАЗВАННОЙ ПРИЧИНЫ (замер 21.09.2026, share-fix-daily, 1-й датированный случай domain-gate-judges-repo-by-one-line-description): --check судит по ОДНОСТРОЧНОМУ description репо, а у агентских рантаймов там пусто или маркетинг — в тот прогон гейт отбил code-yeongyu/oh-my-openagent (тред = дублирование spawn-сессий, ровно наш класс), openclaw/openclaw и teng-lin/notebooklm-py (19.4k★, гоняем в проде), оставив core только у stripe/ai, claude-code, codex. Брать такую цель можно ТОЛЬКО когда сходятся три условия: описание пустое/маркетинговое · САМ ТРЕД лежит в одной из 12 ниш github-niche-focus-block.md · отвечаем ПРОГОНОМ из своей боевой практики, а не мнением. Причина пишется словами в вердикт очереди и в отчёт — «взято по названной причине: <ниша треда>». Лазерный фокус 07.09 этим НЕ ослабляется: мимо идут репо, где ниши нет и в самом треде.

Шаг 2 — отобрать 3-5 ЛУЧШИХ живых тредов (anton капсом: «ТРИ - ПЯТЬ, не 1-2»)

Критерии лучшего: живой (человеческая активность, не бот-бампы) · наш симптом там воспроизведён (не однословная коллизия) · есть кому помочь (страдальцы без решения). Дедуп: проверь, нет ли нас (tonydzi) уже в треде.

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
8
Repository forks
2
7-day trend score
11

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/tonydzi/second-brain-starter-kit/share-fix/badge)](https://verified-skill.com/skills/tonydzi/second-brain-starter-kit/share-fix)

Something wrong with this skill or its page? Tell us.