[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J1M7Q2T82FXF2S5TYWMYWK":3,"skill-same:01M6J1M7Q2T82FXF2S5TYWMYWK":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6J1M7Q2T82FXF2S5TYWMYWK","skill:setup",null,"Dev mode setup для awesome-claude репы — создаёт симлинки skills\u002F, commands\u002F, rules\u002F в .claude\u002F напрямую через bash. Идемпотентен: повторный вызов выводит \"Already linked\". Если .claude\u002F\u003Cdir> уже существует как обычная директория — предупреждает и просит подтверждение перед заменой.","esurvanov\u002Fawesome-claude","esurvanov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4973667?v=4","01M6J1G7N9TE6PM9STY2K0BH2Y","Egor Urvanov","01M6J1G7S79PJF3DN0XVVPBMM4",22,"MIT","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Fsetup\u002Fskill.md",[],[19,5,20,21,22,23,24,25,26],"setup","dev","Bash","Rules","read","commands","sonnet","mode","2026-11-10 10:12:30",false,"---\nname: skill:setup\ndescription: >\n  Dev mode setup для awesome-claude репы — создаёт симлинки skills\u002F, commands\u002F, rules\u002F\n  в .claude\u002F напрямую через bash. Идемпотентен: повторный вызов выводит \"Already linked\".\n  Если .claude\u002F\u003Cdir> уже существует как обычная директория — предупреждает и просит\n  подтверждение перед заменой.\nmodel: sonnet\nallowed-tools: Bash, Read, AskUserQuestion\n---\n\n# skill:setup — dev mode симлинки\n\n## Шаги\n\n### 1. Pre-checks\n\nЧерез Bash проверь что текущая директория — корень awesome-claude (содержит `skills\u002F`, `commands\u002F`, `rules\u002F`):\n\n```bash\ntest -d skills && test -d commands && test -d rules || { echo \"ERROR: not in awesome-claude repo root\"; exit 1; }\n```\n\nЕсли нет — остановись с сообщением `not in awesome-claude repo root`.\n\n### 2. Create .claude\u002F if missing\n\n```bash\nmkdir -p .claude\n```\n\n### 3. Для каждой из директорий `skills`, `commands`, `rules` — обработать состояние:\n\n```bash\nfor dir in skills commands rules; do\n  target=\".claude\u002F$dir\"\n  source=\"$(pwd)\u002F$dir\"\n  if [ -L \"$target\" ]; then\n    current=$(readlink \"$target\")\n    if [ \"$current\" = \"$source\" ]; then\n      echo \"$target: Already linked\"\n      continue\n    fi\n    echo \"$target: symlink points to $current, expected $source\"\n    # ask for confirmation to retarget\n  elif [ -e \"$target\" ]; then\n    echo \"WARNING: $target exists as a real directory — will be replaced\"\n    # ask for confirmation\n  fi\ndone\n```\n\n### 4. Confirmation для замены реальной директории\n\nЕсли на шаге 3 обнаружена реальная директория или симлинк на другой источник — вызови **AskUserQuestion**:\n\n```\n.claude\u002F\u003Cdir> exists as \u003Creal directory | symlink to other path>. Replace with symlink to $(pwd)\u002F\u003Cdir>?\nOptions: Replace | Skip | Abort all\n```\n\nПри `Abort all` — остановись без изменений.\n\n### 5. Создать симлинки\n\nДля каждого `\u003Cdir>` который требует обновления:\n\n```bash\nln -sfn \"$(pwd)\u002F\u003Cdir>\" \".claude\u002F\u003Cdir>\"\necho \"$target: linked → $source\"\n```\n\n### 6. Verify rules index\n\nПосле создания симлинков проверь, что `.claude\u002Frules\u002Findex.md` существует и содержит YAML-блок с реестром правил:\n\n```bash\ntest -f .claude\u002Frules\u002Findex.md || echo \"WARN: .claude\u002Frules\u002Findex.md not found — rules registry missing\"\ngrep -q '```yaml' .claude\u002Frules\u002Findex.md && echo \"index.md: registry OK\" || echo \"WARN: index.md has no YAML block\"\n```\n\nЕсли `index.md` отсутствует — предупредить пользователя: файл нужно создать вручную или обновить awesome-claude до версии с поддержкой rules-index.\n\n### 7. Final report\n\n```\nskill:setup completed:\n- .claude\u002Fskills    → $(pwd)\u002Fskills    [linked|already-linked|skipped]\n- .claude\u002Fcommands  → $(pwd)\u002Fcommands  [...]\n- .claude\u002Frules     → $(pwd)\u002Frules     [...]\n- .claude\u002Frules\u002Findex.md: [registry OK | WARN: missing]\n\nEdits in skills\u002F, commands\u002F, rules\u002F are now visible to Claude Code without manual copying.\n```\n\n## Что скилл НЕ делает\n\n- НЕ устанавливает зависимости (это `skill:deps`).\n- НЕ читает `manifest.yaml`.\n- НЕ запускает другие скиллы.\n- НЕ изменяет содержимое `skills\u002F`, `commands\u002F`, `rules\u002F` — только создаёт симлинки.\n","# skill:setup — dev mode симлинки\n\n## Шаги\n\n### 1. Pre-checks\n\nЧерез Bash проверь что текущая директория — корень awesome-claude (содержит `skills\u002F`, `commands\u002F`, `rules\u002F`):\n\n```bash\ntest -d skills && test -d commands && test -d rules || { echo \"ERROR: not in awesome-claude repo root\"; exit 1; }\n```\n\nЕсли нет — остановись с сообщением `not in awesome-claude repo root`.\n\n### 2. Create .claude\u002F if missing\n\n```bash\nmkdir -p .claude\n```\n\n### 3. Для каждой из директорий `skills`, `commands`, `rules` — обработать состояние:\n\n```bash\nfor dir in skills commands rules; do\n  target=\".claude\u002F$dir\"\n  source=\"$(pwd)\u002F$dir\"\n  if [ -L \"$target\" ]; then\n    current=$(readlink \"$target\")\n    if [ \"$current\" = \"$source\" ]; then\n      echo \"$target: Already linked\"\n      continue\n    fi\n    echo \"$target: symlink points to $current, expected $source\"\n    # ask for confirmation to retarget\n  elif [ -e \"$target\" ]; then\n    echo \"WARNING: $target exists as a real directory — will be replaced\"\n    # ask for confirmation\n  fi\ndone\n```\n\n### 4. Confirmation для замены реальной директории\n\nЕсли на шаге 3 обнаружена реальная директория или симлинк на другой источник — вызови **AskUserQuestion**:\n\n```\n.claude\u002F\u003Cdir> exists as \u003Creal directory | symlink to other path>. Replace with symlink to $(pwd)\u002F\u003Cdir>?\nOptions: Replace | Skip | Abort all\n```\n\nПри `Abort all` — остановись без изменений.\n\n### 5. Создать симлинки\n\nДля каждого `\u003Cdir>` который требует обновления:\n\n```bash\nln -sfn \"$(pwd)\u002F\u003Cdir>\" \".claude\u002F\u003Cdir>\"\necho \"$target: linked → $source\"\n```\n\n### 6. Verify rules index\n\nПосле создания симлинков проверь, что `.claude\u002Frules\u002Findex.md` существует и содержит YAML-блок с реестром правил:\n\n```bash\ntest -f .claude\u002Frules\u002Findex.md || echo \"WARN: .claude\u002Frules\u002Findex.md not found — rules registry missing\"\ngrep -q '```yaml' .claude\u002Frules\u002Findex.md && echo \"index.md: registry OK\" || echo \"WARN: index.md has no YAML block\"\n```\n\nЕсли `index.md` отсутствует — предупредить пользователя: файл нужно создать вручную или обновить awesome-claude до версии с поддержкой rules-index.\n\n### 7. Final report\n\n```\nskill:setup completed:\n- .claude\u002Fskills    → $(pwd)\u002Fskills    [linked|already-linked|skipped]\n- .claude\u002Fcommands  → $(pwd)\u002Fcommands  [...]\n- .claude\u002Frules     → $(pwd)\u002Frules     [...]\n- .claude\u002Frules\u002Findex.md: [registry OK | WARN: missing]\n\nEdits in skills\u002F, commands\u002F, rules\u002F are now visible to Claude Code without manual copying.\n```\n\n## Что скилл НЕ делает\n\n- НЕ устанавливает зависимости (это `skill:deps`).\n- НЕ читает `manifest.yaml`.\n- НЕ запускает другие скиллы.\n- НЕ изменяет содержимое `skills\u002F`, `commands\u002F`, `rules\u002F` — только создаёт симлинки.\n",{"name":5,"model":25,"description":32,"allowed-tools":33},"Dev mode setup для awesome-claude репы — создаёт симлинки skills\u002F, commands\u002F, rules\u002F в .claude\u002F напрямую через bash. Идемпотентен: повторный вызов выводит \"Already linked\". Если .claude\u002F\u003Cdir> уже существует как обычная директория — предупреждает и просит подтверждение перед заменой.\n","Bash, Read, AskUserQuestion","main","81eafc75f9ca212c44852f5012421b956024b0e6","namespace\u002Fskill\u002Fskills\u002Fsetup",5,"https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude","https:\u002F\u002Fgithub.com\u002Fesurvanov","https:\u002F\u002Fwww.urvanov.com\u002F","CTO in iGaming (NDA). AI development, engineering leadership, networking. Based between Batumi, Da Nang and Bangkok. Founder of Jaiora.","2026-05-12 00:32:28",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add esurvanov\u002Fawesome-claude --skill \"skill:setup\"",{"tool":49,"command":50},"bunx","bunx skills add esurvanov\u002Fawesome-claude --skill \"skill:setup\"",{"tool":52,"command":53},"pnpm","pnpm dlx skills add esurvanov\u002Fawesome-claude --skill \"skill:setup\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Fsetup\u002Fskill.md",true,[57],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"cases\u002Fsetup.md","REFERENCE","参考文档",1550,"https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Fsetup\u002Fcases\u002Fsetup.md",[64,86,99,115,129,147],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":78,"publishedAt":27},"01M6J1MGH6A2FXTHYDF0WCCQJZ","skill:test-skill","Тест одного скилла: несколько кейсов, стабы, семантические проверки. Читает cases\u002F\u003Cns>\u002F\u003Cskill>.md, для каждого Case поднимает стаб, запускает скилл в агенте, проверяет contains + semantic.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Ftest-skill\u002Fskill.md",[70,75],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000023","Skill与智能体开发",[79,80,81,82,21,23,83,84,85,25],"test","Test Skill","skill:test skill","help","sdd","semantic","case",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":94,"publishedAt":27},"01M6J1MCNHVC2NAVF5XYKCA3BR","skill:test-all","Запускает все тесты скиллов. Обнаруживает тест-спеки в .claude\u002Fskills\u002F*\u002F*\u002Fcases\u002F, запускает каждый через логику test-skill, выводит сводную таблицу, проверяет TDD-coverage матрицу.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Ftest-all\u002Fskill.md",[92,93],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},[79,95,96,97,21,23,98,25],"test all","skill:test all","tdd","coverage",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":106,"publishedAt":27},"01M6J1M37B5M33229RTK5EQM2Y","skill:release","Финальный шаг контрибьюторского workflow — релиз awesome-claude. Bump-version в manifest.yaml, commit, version tag. Останавливается если working tree не чистый.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Frelease\u002Fskill.md",[105],{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},[101,107,108,109,110,111,21,23,112,113,25,114],"release","commit","workflow","yaml","manifest","version","bump","tree",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":127,"publishedAt":27},"01M6J1KZ8Y0TFBRF0D5ZKV62DW","skill:onboarding","Guided entry point для контрибьютора awesome-claude. Показывает полный contributor workflow и текущий следующий шаг по состоянию репы. НЕ запускает другие скиллы автоматически — только показывает, что вызвать дальше.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Fonboarding\u002Fskill.md",[121,122],{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":123,"categoryName":124,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[128,117,25,109,23,21],"onboarding",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":27},"01M6J1KTMG1PW8QJGTGH9PQE4V","skill:deps","Установка\u002Fпроверка зависимостей awesome-claude из manifest.yaml: CLI-инструменты из секции tools:, субмодули из repos: через sdd:sync. Read-only по manifest.yaml — никогда не пишет в него (для добавления записей используй ручное редактирование или sdd:repo). Валидирует схему manifest.yaml: ошибка и стоп если отсутствует один из version, tools, repos.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fskill\u002Fskills\u002Fdeps\u002Fskill.md",[135],{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},[137,131,138,139,140,110,141,111,21,142,23,112,143,83,144,25,145,146],"deps","repos","cli","sync","Tools","repo","only","read-only","sdd:repo","sdd:sync",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":155,"publishedAt":27},"01M6J1KNENC157AA5ESVSMP25B","sdd:test","Generate and run check artifacts for a spec. Self-sufficient: MCP preflight, 2-agent generation, автоматически по всем Requirements, auto state transition.","https:\u002F\u002Fgithub.com\u002Fesurvanov\u002Fawesome-claude\u002Fblob\u002Fmain\u002Fnamespace\u002Fsdd\u002Fskills\u002Ftest\u002Fskill.md",[153,154],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},[149,83,79,156,157,158,159,160,161,162,163,164,165,166,167,168,169],"spec","generate","run","artifacts","state","preflight","check","auto","self","requirements","generation","agent generation","for","MCP"]