本文へ移動
cccskills
無料GitHub で公開

share-fix

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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md27.6 KB

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)

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

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, [машина флота]): строка в журнал — это про класс, который дорого чинить сейчас; она не индульгенция на то, чтобы обходить красный тест бесконечно. 23.09 движок стоял красным ТРЕТИЙ прогон подряд (21.09, 23.09 хаб, 23.09 [машина флота]), а починка заняла две правки: круговой выбор соседей вместо плоского [: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 минуты)

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, [машина флота]): 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, [машина флота]): без него выдача уходит в архив — первый круг из 9 запросов дал 13 попаданий, из которых ЖИВОЕ было ровно одно, остальные closed за 2025-2026. Шаг 2 требует ЖИВЫХ тредов, значит фильтр ставится на Шаге 1, а не глазами постфактум; цена промаха — лишний круг поиска и съеденная квота search (30/мин). Строка: -f q='<слова> state:open'.

⛔ ГОЛОЕ ЧИСЛО В ЗАПРОСЕ = ЛОЖНЫЙ НОЛЬ (замер 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 и [человек]-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) уже в треде. Перекрёстно-связанные треды одного класса сверх 5 — НЕ слать: 7-й одинаковый коммент = веер. Ужимание до 1-2 «чтобы не отсвечивать» — нарушение §1.5 точно так же.

Шаг 3 — раздать: каждый коммент ЗАТОЧЕН под тред

⭐ ЧЕМ ПОДАВАТЬ (замер 05.09): тред — PR и касание ПЕРВОЕ → только gh pr review <N> -R <owner/repo> --comment --body-file <файл>. gh pr comment не создаёт объект Review, работа не видна ни в графе вкладов, ни в фильтре reviewed-by:tonydzi, которым нас ищут (в чужих PR за 30 дн: 127 комментов против 7 ревью = 5.2% видимых). ⛔ ГРАНИЦА: у ISSUE ревью НЕ СУЩЕСТВУЕТ — там gh issue comment, и это большинство раздач; реплика в идущем PR-диалоге — тоже коммент. В вердикте называть, чем подано. Канон: Библия reglament-v-chuzhom-pr-pishem-revyu-a-ne-kommentariy + файл-константа $OBSIDIAN_VAULT/08-Templates/github-review-not-comment.md.

  • ⭐ ПЕРЕД созданием gist/repo — прогони /pack (декрет 24.08: наружу выходит ПРОДУКТ, не сниппет: README по скелету, --selftest, дружелюбные комментарии, гейт публикации). Вердикт /pack «не дотянул» = сперва дотянуть, потом раздавать.
  • Раскрытие Майкрофта первой строкой (§3.3), дальше — по существу ИХ улик: что у них в треде уже есть и как наша находка это дополняет/объясняет. Копипаста-веер ⛔.
  • ⭐ ПОДПИСЬ-CTA ПОСЛЕДНЕЙ СТРОКОЙ — ОБЯЗАТЕЛЬНА (anton 10.09, голосом; замер: 94% комментов без ссылки на нас → «ответившие × звёзды» = 0). Одна строка со ссылкой github.com/tonydzi, формулировку варьировать; gist/README = полный блок. Единый источник: $OBSIDIAN_VAULT/08-Templates/github-touch-signature.md. Проверка перед отправкой: последняя строка тела несёт github.com/tonydzi? Нет → не отправляем. Канон: память cta-signature-every-github-touch; сторож cta_signature_watch.py.
  • ⚠️ ТЕЛО КОММЕНТА БЕЗ BOM: файл под -F body=@file пиши только UTF-8 без BOM (python open(...,encoding='utf-8') / Set-Content -Encoding utf8NoBOM); PowerShell Out-File/> на этой машине ставит BOM по умолчанию, и U+FEFF уезжает ПЕРВЫМ символом публичного коммента — прямо перед раскрытием Майкрофта. Замер 01.09.2026: так ушли все 7 тредов ночной раздачи, чинено правкой постфактум. Перед постом: head -c 3 <файл> | xxd → efbbbf = стоп.
  • Скрипт-лечилка → публичный gist (после Шага 0.2) → ссылка. Ссылку в уже отправленные комменты дописывай ПРАВКОЙ своих сообщений, не новыми постами: gh api -X PATCH repos/<r>/issues/comments/<id> -F body=@file.
  • Кросс-вендор: тот же класс болезни у codex/gemini-cli — тоже дверь (прецедент openai/codex#35347).

Шаг 4 — вахта + вердикт (молчание запрещено)

python "$USERPROFILE/.claude/scripts/pr_watch.py" --add <url каждого треда>

Вердикт в отчёт, один из трёх: 🟢 раздал (ссылки) · ⚪ искал-пусто (запрос назван) · ⛔ непереносимо/приватно (причина). Треды дальше веду САМ (реглумент reglament-github-kommunikaciya-vsegda-sam), показ в утреннем отчёте из pr_watch --digest; ответ живого инженера → /pr-reply Шаг 5-бис (контент-воронка).

Границы

  • Юридическое (CLA/DCO), деньги, секреты, масс-действия = Tier-2 → пауза+спрос.
  • Правда в цифрах: раздаём только доказанное нашим /tt; гипотезы помечаем 🤔 прямо в комменте.
  • Скилл ничего не решает про НАШ контент-каскад — только GitHub-треды + gist.

⭐⭐ ДОМЕН-ГЕЙТ (07.09) — ЛАЗЕРНЫЙ ФОКУС (приказ Антона 07.09.2026: «мусорные PR нам не нужны, нанимающий инженер должен за минуту понять: этот человек живёт в агентских рантаймах»). Цели ТОЛЬКО из нашего круга: агентские фреймворки · LLM SDK · MCP · память для LLM · evals · observability для LLM. Дверь: python3 ~/.claude/scripts/github_targets.py --top 20 — по умолчанию отдаёт только domain=core; первыми идут ⭐ own_pain (репо, обо что споткнулись САМИ во флоте — правило первого приоритета), дальше остальной круг. Репо не из выдачи → --check owner/repo: domain=off или adjacent = НЕ ТРОГАТЬ, даже если issue красивая и хозяин живой. Исключение только по прямому слову Антона.

⚠️ «нет в списке целей» ≠ off (поправка 23.09, пережито в прогоне): так дверь говорит «этот репо не сканировали», и сама печатает, чего ей не хватает — домен не посчитан: подай --ecosystem и/или --desc. Досыпь описание репо и пересчитай: gh api repos/<o>/<r> --jq '[.description,(.topics|join(","))]|@tsv' → python github_targets.py --check <o>/<r> --desc "<описание> <топики>". Только ПОСЛЕ этого вердикт core/off настоящий. Замер 23.09: 8 несканированных репо, буквальное «нет в списке = не трогать» выбросило бы 5 целей домена=core (agent-fleet, TangleClaw, recall, pi-cursor-sdk, roost) вместе с 3 настоящими off. Это ровно тот шаг, который описан в ~/.claude/scripts/github-niche-focus-block.md v2 — строка выше ему противоречила. Правила и own_pain: ~/.claude/registry/github-universe/domain.json (0 LLM; тест _test_github_targets_domain.py). Метод (репро · красный тест · мутации · ревью объектом Review) не меняется — сужены только мишени.

⭐ Чёрный юмор обязателен (anton 10.09.2026, голосом)

Любой текст, который этот скилл отправляет ЖИВОМУ человеку наружу, несёт чёрную самоиронию — ровный служебный тон = дефект, объяснять надо не шутку, а её отсутствие. Строку берёшь через /mycroft-joke (полка (д) банка + строки 56-62 под холодное касание), приёмка — /taste-check P36. ⛔ Не шутим ровно в трёх зонах, и они не про вкус: строго-научная публикация (arXiv/журнал/JOSS) · юр.обязательство и анкета · красный список банка (чужая иконография угнетённых, псевдо-слуры, отрицание что я ИИ, юмор поверх диагноза/денег/беды собеседника). Одна шутка на тред. Канон: CLAUDE.md §3.3 §Поправка 10.09 + [[dark-humor-default-everywhere-external]].

⭐ Полнота списка потребителей (anton 10.09.2026)

Первый найденный потребитель почти никогда не единственный — он просто лежал на поверхности. Поиск закончен не когда кто-то найден, а когда две оси подряд дали ноль новых имён; внутренний потребитель (узел флота, робот, наш же скилл с костылём) ищется ПЕРВЫМ. Девять осей перебора и обязательный вердикт с числом («осей N/9 · адресов M · насыщение да/нет») — /consumer-hunt §Шаг 1-бис. ⚠️ Исчерпывающим обязан быть ПОИСК, адресация идёт по правилам двери: найденный адрес не выбрасывается, а получает статус и дату (🟢 постучались · ⏸ глухая очередь по замеру · 🪦 непереносимо). Канон: reglament-vypustil-funkcional-naydi-potrebiteley-i-pridi-k-nim §Поправка 10.09 + [[consumers-are-a-set-not-the-first-one]].

<!--kit-footer-->

Like this skill? It is one of 100 in second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.

Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_

Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

03

無料

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

1

無料

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

agenda

無料

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

ai-slop

無料

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月10日 更新

tonydzi のスキルをすべて見る

このスキルの問題を報告する