[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GSF4QCMKM2F41FKQ0XNAQ":3,"skill-same:01M71GSF4QCMKM2F41FKQ0XNAQ":62},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M71GSF4QCMKM2F41FKQ0XNAQ","pr-summary",null,"Analyze all PR changes and update PR description with accurate summary.","timurgaleev\u002Fvibestack","timurgaleev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F32696429?v=4","01M71GMS53Z9B4JQTCQEFXAE9E","Timur Galeev","01M71GMS5S1Q7BEYB3Z7GY3E85",8,"MIT","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Fskills\u002Fpr-summary\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"pr","pr summary","summary","pr description","Bash","analyze","with","changes","update","read","write","grep","update pr description","update pr","2026-11-10 10:12:30",false,"---\nname: pr-summary\ndescription: Analyze all PR changes and update PR description with accurate summary.\nallowed-tools: Read, Write, Bash, Grep, Glob\n---\n\nIf this session was compacted, the copy of this skill in context may be cut off.\nRead `${CLAUDE_SKILL_DIR}\u002FSKILL.md` from disk and resume at the step you are on.\n\n## Preamble\n\n```bash\neval \"$(\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-slug\" 2>\u002Fdev\u002Fnull)\" 2>\u002Fdev\u002Fnull || SLUG=\"unknown\"\n_LEARN_FILE=\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fprojects\u002F${SLUG:-unknown}\u002Flearnings.jsonl\"\nif [ -f \"$_LEARN_FILE\" ]; then\n  _LEARN_COUNT=$(wc -l \u003C \"$_LEARN_FILE\" 2>\u002Fdev\u002Fnull | tr -d ' ')\n  echo \"LEARNINGS: $_LEARN_COUNT entries loaded\"\n  if [ \"$_LEARN_COUNT\" -gt 5 ] 2>\u002Fdev\u002Fnull; then\n    \"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-learnings-search\" --limit 5 2>\u002Fdev\u002Fnull || true\n  fi\nelse\n  echo \"LEARNINGS: none yet\"\nfi\n```\n\n{{include lib\u002Fsnippets\u002Fsession-host.md}}\n\n{{include lib\u002Fsnippets\u002Fworking-protocols.md}}\n\n{{include lib\u002Fsnippets\u002Fstate-protocols.md}}\n\n# PR Summary Update\n\n## Philosophy\n\n- **Analyze all changes without exception** — track all commits included in the PR, not just the latest.\n- **Accuracy is essential** — do not guess; read the actual diff and code before describing.\n- **Write from the reviewer's perspective** — explain \"why\" this change was needed and what impact it has.\n\n## Rules\n\n- Read all changed files before writing the summary\n- Analyze ALL commits in the PR, not just the latest\n- Be precise — do not guess or hallucinate changes\n- Preserve existing PR metadata (labels, assignees, reviewers)\n- Do NOT add promotional or attribution footers\n- Do NOT add unnecessary lines (Co-Authored-By, Generated with, etc.)\n\n## Process\n\n### Step 1: Identify PR\n\nDetermine the PR number from argument or current branch:\n\n```bash\n# If argument provided, use it directly\nPR_NUMBER={argument}\n\n# Otherwise, infer from current branch\ngh pr view --json number -q '.number'\n```\n\n### Step 2: Gather PR Context\n\n```bash\n# Get current PR details\ngh pr view {PR_NUMBER} --json title,body,baseRefName,headRefName,commits,files\n\n# Get base branch\nBASE_BRANCH=$(gh pr view {PR_NUMBER} --json baseRefName -q '.baseRefName')\n\n# View all commits in PR\ngh pr view {PR_NUMBER} --json commits -q '.commits[] | \"\\(.oid[:7]) \\(.messageHeadline)\"'\n\n# View all changed files with stats\ngh pr diff {PR_NUMBER} --stat\n\n# View full diff\ngh pr diff {PR_NUMBER}\n```\n\n### Step 3: Analyze Existing PR Body\n\n**CRITICAL: Check the existing PR body first.**\n\n```bash\n# Get current PR body\nEXISTING_BODY=$(gh pr view {PR_NUMBER} --json body -q '.body')\n```\n\n**Check for user-added content to preserve:**\n- Manual notes or context added by the author\n- Links to related issues, designs, or discussions\n- Sections not generated by this skill (e.g., custom sections)\n\nIf the existing body contains user-added content, preserve it in a `## Notes` section at the bottom.\n\n### Step 4: Deep Analysis\n\n**CRITICAL: Do not rely on diff statistics alone — understand the meaning of the changes.**\n\n**For large PRs (>20 files or >1000 lines changed):**\n- Group files by directory\u002Fmodule and analyze each group\n- Focus on structural changes first, then detail changes\n- Summarize at module level, not file level\n\n**For each changed file:**\n1. **Read the full diff** — understand what was added, modified, removed\n2. **Read the file** — understand the full context around the changes\n3. **Identify the purpose** — why was this file changed?\n4. **Assess impact** — what depends on this? Could this break anything?\n\n**Categorize changes:**\n\n| Category | Description |\n|----------|-------------|\n| **New Feature** | New functionality added |\n| **Bug Fix** | Existing behavior corrected |\n| **Refactor** | Code restructured without behavior change |\n| **Performance** | Optimization improvements |\n| **Documentation** | Docs, comments, README updates |\n| **Test** | Test additions or modifications |\n| **Configuration** | Config, CI\u002FCD, build changes |\n| **Dependency** | Package additions, updates, removals |\n| **Breaking Change** | Changes that break existing API\u002Fbehavior |\n\n**Deliberation questions:**\n- What is the **single purpose** of this PR?\n- Are there **breaking changes** for consumers?\n- What **edge cases** might be affected?\n- Are there any **risks** or **known limitations**?\n\n### Step 5: Craft PR Summary\n\n**Before writing, articulate:**\n1. What problem does this PR solve? (Summary)\n2. What specific changes were made and why? (Changes)\n3. Are there any breaking changes? (Breaking Changes)\n4. How should a reviewer verify this works? (Test Plan)\n\n**PR body format:**\n\n```markdown\n## Summary\n- Brief description of what and WHY\n\n## Changes\n- Change 1: why this was needed\n- Change 2: why this was needed\n\n## Breaking Changes\n- (if any) Description of breaking change and migration path\n\n## Test Plan\n- [ ] How to verify changes work\n- [ ] Edge cases to test\n```\n\n### Step 6: Update PR Description\n\nThe body quotes commit messages, diff content and the existing PR text, so it\nnever appears in shell source — not in a quoted argument, and not in a heredoc\neither: a line equal to the terminator ends the heredoc and everything after it\nruns as shell. Create a private file for it:\n\n```bash\nPR_BODY_FILE=$(mktemp \"${TMPDIR:-\u002Ftmp}\u002Fvibe-pr-summary-XXXXXXXX\")\necho \"PR_BODY_FILE: $PR_BODY_FILE\"\n```\n\nRead the empty file, then **Write the body into the printed `PR_BODY_FILE` with the\nWrite tool**, in the Step 5 format with every section filled from the analysis\n(omit Breaking Changes when there are none). Then publish that file, substituting\nthe printed path and the PR number:\n\n```bash\nPR_BODY_FILE='\u003CPR_BODY_FILE>'\n[ -s \"$PR_BODY_FILE\" ] || { echo \"ABORT: $PR_BODY_FILE is empty — write the body with the Write tool first\" >&2; exit 1; }\ngh pr edit {PR_NUMBER} --body-file \"$PR_BODY_FILE\" && rm -f \"$PR_BODY_FILE\"\n```\n\n### Step 7: Verify Update\n\n```bash\n# Confirm PR was updated\ngh pr view {PR_NUMBER} --json title,body -q '.body'\n```\n\n### Step 8: Report Summary\n\n```\n## PR Summary Updated\n\n**PR**: #{PR_NUMBER}\n**Title**: {title}\n**Base**: {base_branch} ← {head_branch}\n\n### Analysis\n- Total commits: {N}\n- Files changed: {N}\n- Lines added: +{N}\n- Lines removed: -{N}\n\n### Categories\n- feat: {N} changes\n- fix: {N} changes\n- refactor: {N} changes\n- ...\n\nPR description updated successfully.\n```\n\n## Title Update\n\nIf the PR title is vague (e.g., \"update\", \"fix\", \"WIP\"), suggest a better title:\n\n```bash\ngh pr edit {PR_NUMBER} --title \"\u003Ctype>(\u003Cscope>): \u003Csubject>\"\n```\n\n> **Note:** PR title optionally uses scope. Commit messages use `\u003Ctype>: \u003Csubject>` format without scope.\n\n**Only suggest title changes when:**\n- Title is clearly vague or inaccurate\n- Title doesn't reflect the actual changes\n- Ask user before changing the title\n\n## Anti-Patterns\n\n- Do NOT write a summary without reading ALL changed files\n- Do NOT rely only on commit messages — verify against actual diff\n- Do NOT include changes that don't exist in the PR\n- Do NOT use vague descriptions like \"various improvements\"\n- Do NOT overwrite existing PR body without analyzing it first\n- Do NOT skip reading file context — diffs alone can be misleading\n- Do NOT add information that isn't supported by the code changes\n\n---\n\n## Capture Learnings\n\nIf you discovered a non-obvious pattern, pitfall, or insight during this session, log it:\n\n```bash\n\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-learnings-log\" '{\"skill\":\"pr-summary\",\"type\":\"TYPE\",\"key\":\"SHORT_KEY\",\"insight\":\"DESCRIPTION\",\"confidence\":N,\"source\":\"SOURCE\",\"files\":[\"path\u002Fto\u002Frelevant\u002Ffile\"]}'\n```\n\n**Types:** `pattern`, `pitfall`, `preference`, `architecture`, `operational`.\n\n**Only log genuine discoveries.**\n","If this session was compacted, the copy of this skill in context may be cut off.\nRead `${CLAUDE_SKILL_DIR}\u002FSKILL.md` from disk and resume at the step you are on.\n\n## Preamble\n\n```bash\neval \"$(\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-slug\" 2>\u002Fdev\u002Fnull)\" 2>\u002Fdev\u002Fnull || SLUG=\"unknown\"\n_LEARN_FILE=\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fprojects\u002F${SLUG:-unknown}\u002Flearnings.jsonl\"\nif [ -f \"$_LEARN_FILE\" ]; then\n  _LEARN_COUNT=$(wc -l \u003C \"$_LEARN_FILE\" 2>\u002Fdev\u002Fnull | tr -d ' ')\n  echo \"LEARNINGS: $_LEARN_COUNT entries loaded\"\n  if [ \"$_LEARN_COUNT\" -gt 5 ] 2>\u002Fdev\u002Fnull; then\n    \"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-learnings-search\" --limit 5 2>\u002Fdev\u002Fnull || true\n  fi\nelse\n  echo \"LEARNINGS: none yet\"\nfi\n```\n\n{{include lib\u002Fsnippets\u002Fsession-host.md}}\n\n{{include lib\u002Fsnippets\u002Fworking-protocols.md}}\n\n{{include lib\u002Fsnippets\u002Fstate-protocols.md}}\n\n# PR Summary Update\n\n## Philosophy\n\n- **Analyze all changes without exception** — track all commits included in the PR, not just the latest.\n- **Accuracy is essential** — do not guess; read the actual diff and code before describing.\n- **Write from the reviewer's perspective** — explain \"why\" this change was needed and what impact it has.\n\n## Rules\n\n- Read all changed files before writing the summary\n- Analyze ALL commits in the PR, not just the latest\n- Be precise — do not guess or hallucinate changes\n- Preserve existing PR metadata (labels, assignees, reviewers)\n- Do NOT add promotional or attribution footers\n- Do NOT add unnecessary lines (Co-Authored-By, Generated with, etc.)\n\n## Process\n\n### Step 1: Identify PR\n\nDetermine the PR number from argument or current branch:\n\n```bash\n# If argument provided, use it directly\nPR_NUMBER={argument}\n\n# Otherwise, infer from current branch\ngh pr view --json number -q '.number'\n```\n\n### Step 2: Gather PR Context\n\n```bash\n# Get current PR details\ngh pr view {PR_NUMBER} --json title,body,baseRefName,headRefName,commits,files\n\n# Get base branch\nBASE_BRANCH=$(gh pr view {PR_NUMBER} --json baseRefName -q '.baseRefName')\n\n# View all commits in PR\ngh pr view {PR_NUMBER} --json commits -q '.commits[] | \"\\(.oid[:7]) \\(.messageHeadline)\"'\n\n# View all changed files with stats\ngh pr diff {PR_NUMBER} --stat\n\n# View full diff\ngh pr diff {PR_NUMBER}\n```\n\n### Step 3: Analyze Existing PR Body\n\n**CRITICAL: Check the existing PR body first.**\n\n```bash\n# Get current PR body\nEXISTING_BODY=$(gh pr view {PR_NUMBER} --json body -q '.body')\n```\n\n**Check for user-added content to preserve:**\n- Manual notes or context added by the author\n- Links to related issues, designs, or discussions\n- Sections not generated by this skill (e.g., custom sections)\n\nIf the existing body contains user-added content, preserve it in a `## Notes` section at the bottom.\n\n### Step 4: Deep Analysis\n\n**CRITICAL: Do not rely on diff statistics alone — understand the meaning of the changes.**\n\n**For large PRs (>20 files or >1000 lines changed):**\n- Group files by directory\u002Fmodule and analyze each group\n- Focus on structural changes first, then detail changes\n- Summarize at module level, not file level\n\n**For each changed file:**\n1. **Read the full diff** — understand what was added, modified, removed\n2. **Read the file** — understand the full context around the changes\n3. **Identify the purpose** — why was this file changed?\n4. **Assess impact** — what depends on this? Could this break anything?\n\n**Categorize changes:**\n\n| Category | Description |\n|----------|-------------|\n| **New Feature** | New functionality added |\n| **Bug Fix** | Existing behavior corrected |\n| **Refactor** | Code restructured without behavior change |\n| **Performance** | Optimization improvements |\n| **Documentation** | Docs, comments, README updates |\n| **Test** | Test additions or modifications |\n| **Configuration** | Config, CI\u002FCD, build changes |\n| **Dependency** | Package additions, updates, removals |\n| **Breaking Change** | Changes that break existing API\u002Fbehavior |\n\n**Deliberation questions:**\n- What is the **single purpose** of this PR?\n- Are there **breaking changes** for consumers?\n- What **edge cases** might be affected?\n- Are there any **risks** or **known limitations**?\n\n### Step 5: Craft PR Summary\n\n**Before writing, articulate:**\n1. What problem does this PR solve? (Summary)\n2. What specific changes were made and why? (Changes)\n3. Are there any breaking changes? (Breaking Changes)\n4. How should a reviewer verify this works? (Test Plan)\n\n**PR body format:**\n\n```markdown\n## Summary\n- Brief description of what and WHY\n\n## Changes\n- Change 1: why this was needed\n- Change 2: why this was needed\n\n## Breaking Changes\n- (if any) Description of breaking change and migration path\n\n## Test Plan\n- [ ] How to verify changes work\n- [ ] Edge cases to test\n```\n\n### Step 6: Update PR Description\n\nThe body quotes commit messages, diff content and the existing PR text, so it\nnever appears in shell source — not in a quoted argument, and not in a heredoc\neither: a line equal to the terminator ends the heredoc and everything after it\nruns as shell. Create a private file for it:\n\n```bash\nPR_BODY_FILE=$(mktemp \"${TMPDIR:-\u002Ftmp}\u002Fvibe-pr-summary-XXXXXXXX\")\necho \"PR_BODY_FILE: $PR_BODY_FILE\"\n```\n\nRead the empty file, then **Write the body into the printed `PR_BODY_FILE` with the\nWrite tool**, in the Step 5 format with every section filled from the analysis\n(omit Breaking Changes when there are none). Then publish that file, substituting\nthe printed path and the PR number:\n\n```bash\nPR_BODY_FILE='\u003CPR_BODY_FILE>'\n[ -s \"$PR_BODY_FILE\" ] || { echo \"ABORT: $PR_BODY_FILE is empty — write the body with the Write tool first\" >&2; exit 1; }\ngh pr edit {PR_NUMBER} --body-file \"$PR_BODY_FILE\" && rm -f \"$PR_BODY_FILE\"\n```\n\n### Step 7: Verify Update\n\n```bash\n# Confirm PR was updated\ngh pr view {PR_NUMBER} --json title,body -q '.body'\n```\n\n### Step 8: Report Summary\n\n```\n## PR Summary Updated\n\n**PR**: #{PR_NUMBER}\n**Title**: {title}\n**Base**: {base_branch} ← {head_branch}\n\n### Analysis\n- Total commits: {N}\n- Files changed: {N}\n- Lines added: +{N}\n- Lines removed: -{N}\n\n### Categories\n- feat: {N} changes\n- fix: {N} changes\n- refactor: {N} changes\n- ...\n\nPR description updated successfully.\n```\n\n## Title Update\n\nIf the PR title is vague (e.g., \"update\", \"fix\", \"WIP\"), suggest a better title:\n\n```bash\ngh pr edit {PR_NUMBER} --title \"\u003Ctype>(\u003Cscope>): \u003Csubject>\"\n```\n\n> **Note:** PR title optionally uses scope. Commit messages use `\u003Ctype>: \u003Csubject>` format without scope.\n\n**Only suggest title changes when:**\n- Title is clearly vague or inaccurate\n- Title doesn't reflect the actual changes\n- Ask user before changing the title\n\n## Anti-Patterns\n\n- Do NOT write a summary without reading ALL changed files\n- Do NOT rely only on commit messages — verify against actual diff\n- Do NOT include changes that don't exist in the PR\n- Do NOT use vague descriptions like \"various improvements\"\n- Do NOT overwrite existing PR body without analyzing it first\n- Do NOT skip reading file context — diffs alone can be misleading\n- Do NOT add information that isn't supported by the code changes\n\n---\n\n## Capture Learnings\n\nIf you discovered a non-obvious pattern, pitfall, or insight during this session, log it:\n\n```bash\n\"${VIBESTACK_HOME:-$HOME\u002F.vibestack}\u002Fbin\u002Fvibe-learnings-log\" '{\"skill\":\"pr-summary\",\"type\":\"TYPE\",\"key\":\"SHORT_KEY\",\"insight\":\"DESCRIPTION\",\"confidence\":N,\"source\":\"SOURCE\",\"files\":[\"path\u002Fto\u002Frelevant\u002Ffile\"]}'\n```\n\n**Types:** `pattern`, `pitfall`, `preference`, `architecture`, `operational`.\n\n**Only log genuine discoveries.**\n",{"name":5,"description":7,"allowed-tools":38},"Read, Write, Bash, Grep, Glob","main","777ec643a83c17a0955856b2eb7f596601709fda","skills\u002Fpr-summary",0,"https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack","https:\u002F\u002Fgithub.com\u002Ftimurgaleev","https:\u002F\u002Ftgaleev.com\u002F","Forward Deployed Engineer \u002F\r\nAWS Community Builder \u002F Cloud Architect ","2026-11-11 15:42:25",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add timurgaleev\u002Fvibestack --skill pr-summary",{"tool":54,"command":55},"bunx","bunx skills add timurgaleev\u002Fvibestack --skill pr-summary",{"tool":57,"command":58},"pnpm","pnpm dlx skills add timurgaleev\u002Fvibestack --skill pr-summary","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Fskills\u002Fpr-summary\u002FSKILL.md",true,[],[63,69,75,81,87,93],{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":33},"01M71GVHCCSQCCPVM8XPSPTA73","docs","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F15-backtick-info-string\u002Fskills\u002Fdocs\u002FSKILL.md",[],[65],{"skillNo":70,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":33},"01M71GVFT1S5MRNM0AYRT2E6VQ","fences","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F14-indented-tilde-fence\u002Fskills\u002Ffences\u002FSKILL.md",[],[71],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":33},"01M71GVEYB54K1S83FGRNKN8CF","dirty","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F10-check-with-drift\u002Fskills\u002Fdirty\u002FSKILL.md",[],[77],{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":33},"01M71GVDX9PMND1337C4388DK4","clean","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F09-check-no-drift\u002Fskills\u002Fclean\u002FSKILL.md",[],[83],{"skillNo":88,"name":89,"nameZh":6,"description":6,"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":92,"publishedAt":33},"01M71GVC3VM66F1ZQT2G8JXDR0","bare","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F08-no-frontmatter\u002Fskills\u002Fbare\u002FSKILL.md",[],[89],{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":33},"01M71GV9T8DAYZT0PX52QX0TE1","idem","https:\u002F\u002Fgithub.com\u002Ftimurgaleev\u002Fvibestack\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frender\u002F07-idempotent-rerender\u002Fskills\u002Fidem\u002FSKILL.md",[],[95]]