[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71V205BAQ1Q6XZEQ168SSP9":3,"skill-same:01M71V205BAQ1Q6XZEQ168SSP9":54},{"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":35,"commitSha":36,"skillDirectory":5,"forksCount":14,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M71V205BAQ1Q6XZEQ168SSP9","vibebuddy-statusline",null,"Wire vibebuddy into Claude Code's statusline so the buddy lives at the bottom of your terminal. No tmux needed.","vansh0027\u002Fvibebuddy","vansh0027","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F98984294?v=4","01M71V19RPKH0YS4YWXCN097XD","Vansh Gupta","01M71V19SGRZXSTBS6RTSDN2ER",0,"MIT","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-statusline\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"vibebuddy","statusline","vibebuddy statusline","terminal","code","at","buddy","tmux","2026-11-10 13:02:02",false,"---\nname: vibebuddy-statusline\ndescription: Wire vibebuddy into Claude Code's statusline so the buddy lives at the bottom of your terminal. No tmux needed.\ntriggers:\n  - vibebuddy statusline\n  - buddy in statusline\n  - put buddy at bottom\n---\n\n# \u002Fvibebuddy-statusline\n\nput the buddy in claude code's bottom row. no tmux pane, no daemon — just one\nline that updates as you work. three steps:\n\n1. inject the `statusLine` block into `~\u002F.claude\u002Fsettings.json` (with backup).\n2. inject the hook block so the buddy actually reacts to events.\n3. tell the user to restart claude code.\n\n## Step 1: Inject statusLine (idempotent)\n\nRead `~\u002F.claude\u002Fsettings.json`. If `vibebuddy line` is already in there, do\nnothing. Otherwise back up and inject.\n\n```bash\nSETTINGS=\"$HOME\u002F.claude\u002Fsettings.json\"\nif grep -q '\"vibebuddy line\"' \"$SETTINGS\" 2>\u002Fdev\u002Fnull; then\n  echo \"buddy already in statusline — nothing to do (•‿•)\"\nelse\n  [ -f \"$SETTINGS\" ] || echo '{}' > \"$SETTINGS\"\n  cp \"$SETTINGS\" \"$SETTINGS.bak-vibebuddy-$(date +%s)\"\n  python3 - \"$SETTINGS\" \u003C\u003C'PY'\nimport json, sys\npath = sys.argv[1]\nwith open(path) as f: cfg = json.load(f)\ncfg[\"statusLine\"] = {\"type\": \"command\", \"command\": \"vibebuddy line\"}\nwith open(path,\"w\") as f: json.dump(cfg, f, indent=2)\nPY\n  echo \"buddy wired into the statusline — old settings backed up just in case\"\nfi\n```\n\n## Step 2: Inject hooks (idempotent)\n\nSame hook injection as `\u002Fvibebuddy-start` — the buddy needs hooks to know what\nstate to be in. Skip if already wired.\n\n```bash\nSETTINGS=\"$HOME\u002F.claude\u002Fsettings.json\"\nif grep -q '\"vibebuddy send auto\"' \"$SETTINGS\" 2>\u002Fdev\u002Fnull; then\n  echo \"hooks already vibing — nothing to do\"\nelse\n  cp \"$SETTINGS\" \"$SETTINGS.bak-vibebuddy-$(date +%s)\"\n  python3 - \"$SETTINGS\" \u003C\u003C'PY'\nimport json, sys\npath = sys.argv[1]\nwith open(path) as f: cfg = json.load(f)\ncfg.setdefault(\"hooks\", {})\nfor ev in [\"UserPromptSubmit\",\"PreToolUse\",\"PostToolUse\",\"Notification\",\"Stop\"]:\n    cfg[\"hooks\"].setdefault(ev, []).append(\n        {\"hooks\":[{\"type\":\"command\",\"command\":\"vibebuddy send auto\"}]}\n    )\nwith open(path,\"w\") as f: json.dump(cfg, f, indent=2)\nPY\n  echo \"hooks wired into $SETTINGS\"\nfi\n```\n\n## Step 3: Tell the user\n\n> **restart claude code now.** statusline + hooks only load at session start,\n> so quit fully and reopen — then ill live at the bottom of your terminal (•‿•)\n>\n> done with me? `\u002Fvibebuddy-stop`\n","# \u002Fvibebuddy-statusline\n\nput the buddy in claude code's bottom row. no tmux pane, no daemon — just one\nline that updates as you work. three steps:\n\n1. inject the `statusLine` block into `~\u002F.claude\u002Fsettings.json` (with backup).\n2. inject the hook block so the buddy actually reacts to events.\n3. tell the user to restart claude code.\n\n## Step 1: Inject statusLine (idempotent)\n\nRead `~\u002F.claude\u002Fsettings.json`. If `vibebuddy line` is already in there, do\nnothing. Otherwise back up and inject.\n\n```bash\nSETTINGS=\"$HOME\u002F.claude\u002Fsettings.json\"\nif grep -q '\"vibebuddy line\"' \"$SETTINGS\" 2>\u002Fdev\u002Fnull; then\n  echo \"buddy already in statusline — nothing to do (•‿•)\"\nelse\n  [ -f \"$SETTINGS\" ] || echo '{}' > \"$SETTINGS\"\n  cp \"$SETTINGS\" \"$SETTINGS.bak-vibebuddy-$(date +%s)\"\n  python3 - \"$SETTINGS\" \u003C\u003C'PY'\nimport json, sys\npath = sys.argv[1]\nwith open(path) as f: cfg = json.load(f)\ncfg[\"statusLine\"] = {\"type\": \"command\", \"command\": \"vibebuddy line\"}\nwith open(path,\"w\") as f: json.dump(cfg, f, indent=2)\nPY\n  echo \"buddy wired into the statusline — old settings backed up just in case\"\nfi\n```\n\n## Step 2: Inject hooks (idempotent)\n\nSame hook injection as `\u002Fvibebuddy-start` — the buddy needs hooks to know what\nstate to be in. Skip if already wired.\n\n```bash\nSETTINGS=\"$HOME\u002F.claude\u002Fsettings.json\"\nif grep -q '\"vibebuddy send auto\"' \"$SETTINGS\" 2>\u002Fdev\u002Fnull; then\n  echo \"hooks already vibing — nothing to do\"\nelse\n  cp \"$SETTINGS\" \"$SETTINGS.bak-vibebuddy-$(date +%s)\"\n  python3 - \"$SETTINGS\" \u003C\u003C'PY'\nimport json, sys\npath = sys.argv[1]\nwith open(path) as f: cfg = json.load(f)\ncfg.setdefault(\"hooks\", {})\nfor ev in [\"UserPromptSubmit\",\"PreToolUse\",\"PostToolUse\",\"Notification\",\"Stop\"]:\n    cfg[\"hooks\"].setdefault(ev, []).append(\n        {\"hooks\":[{\"type\":\"command\",\"command\":\"vibebuddy send auto\"}]}\n    )\nwith open(path,\"w\") as f: json.dump(cfg, f, indent=2)\nPY\n  echo \"hooks wired into $SETTINGS\"\nfi\n```\n\n## Step 3: Tell the user\n\n> **restart claude code now.** statusline + hooks only load at session start,\n> so quit fully and reopen — then ill live at the bottom of your terminal (•‿•)\n>\n> done with me? `\u002Fvibebuddy-stop`\n",{"name":5,"triggers":32,"description":7},[21,33,34],"buddy in statusline","put buddy at bottom","main","fb27b3a1d3079c9f9f5dc005693fc8ca63d5cac1","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy","https:\u002F\u002Fgithub.com\u002Fvansh0027","2026-05-04 12:30:23",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add vansh0027\u002Fvibebuddy --skill vibebuddy-statusline",{"tool":46,"command":47},"bunx","bunx skills add vansh0027\u002Fvibebuddy --skill vibebuddy-statusline",{"tool":49,"command":50},"pnpm","pnpm dlx skills add vansh0027\u002Fvibebuddy --skill vibebuddy-statusline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-statusline\u002FSKILL.md",true,[],[55,70,90,106,121,135],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":27},"01M71V26KQ68QH38BTFAVZAHJ0","vibebuddy-upgrade","Upgrade vibebuddy to the latest version (git pull + rebuild).","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-upgrade\u002FSKILL.md",[],[62,19,63,25,64,65,66,67,68,69],"vibebuddy upgrade","upgrade","latest","pull","git","version","update","rebuild",{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":27},"01M71V24MSXG7MZJR20FR45BB6","vibebuddy-theme","Switch the vibebuddy mascot theme (slime, cat, robot — v0.2).","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-theme\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[82,83,19,84,85,86,87,88,89,25],"theme","vibebuddy theme","change","slime","cat","robot","v0","switch",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":27},"01M71V22RJHJGP705DPBT8DR3P","vibebuddy-stop","Stop the vibebuddy daemon and remove its Claude Code hooks. Clean teardown.","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-stop\u002FSKILL.md",[],[19,97,98,25,99,100,101,102,103,104,23,105],"vibebuddy stop","stop","daemon","remove","hooks","clean","claude code hooks","kill","teardown",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":27},"01M71V1XW249V28F4BWQVRRAS5","vibebuddy-start","Start the vibebuddy daemon and wire Claude Code hooks so the buddy reacts to your session. Idempotent — safe to re-run.","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-start\u002FSKILL.md",[],[113,114,19,115,116,99,117,118,119,120,25,101,103,23],"start","vibebuddy start","idempotent","run","re","session","launch","safe",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":27},"01M71V1VV97GTMVAZH2PVXA00D","vibebuddy-scene","Set, preview, or disable the buddy's environment fx (bubbles, motion, sparkles).","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-scene\u002FSKILL.md",[],[128,19,129,130,131,132,133,134,25],"vibebuddy scene","environment","SET","motion","disable","preview","fx",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":27},"01M71V1SR7T7DPZ4MKZV8DFBQ9","vibebuddy-recap","Show what just happened — local counters from Claude Code hooks. Zero tokens.","https:\u002F\u002Fgithub.com\u002Fvansh0027\u002Fvibebuddy\u002Fblob\u002Fmain\u002Fvibebuddy-recap\u002FSKILL.md",[],[19,142,143,144,145,146,147,118,101,148,103,23],"recap","vibebuddy recap","show","ZeRO","just","tokens","local"]