[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FJ6147DKC1RZ2BAHBB96C7":3,"skill-same:01M6FJ6147DKC1RZ2BAHBB96C7":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6FJ6147DKC1RZ2BAHBB96C7","ln-033-hex-relay-lifecycle",null,"Use when deploying, redeploying, verifying, migrating, or syncing users for the hex-relay Telegram\u002FAPI control plane on a VPS.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Flevn-ln-033-hex-relay-lifecycle\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"lifecycle","ln","ln 033 hex relay lifecycle","relay","hex","when","MCP","for","remote-ssh","plane","vps","block","remote","users","control","telegram","use","edit","write","read","Bash","api","ssh","control plane","chunk","2026-11-10 10:12:30",false,"---\nname: ln-033-hex-relay-lifecycle\ndescription: \"Use when deploying, redeploying, verifying, migrating, or syncing users for the hex-relay Telegram\u002FAPI control plane on a VPS.\"\nlicense: MIT\nallowed-tools: Bash, Read, mcp__hex-ssh__remote-ssh, mcp__hex-ssh__ssh-read-lines, mcp__hex-ssh__ssh-write-chunk, mcp__hex-ssh__ssh-edit-block, mcp__hex-ssh__ssh-download\n---\n\n\u003C!-- markdownlint-disable MD012 MD022 MD032 MD040 MD041 MD060 -->\n\n> **Paths:** File paths (`shared\u002F`, `agents\u002Fhex-relay\u002F`, `..\u002Fln-030-vps-bootstrap\u002Freferences\u002F`) are relative to skills repo root. If not found at CWD, locate this `SKILL.md` directory and go up one level for repo root.\n\n# ln-033-hex-relay-lifecycle\n\n**Type:** L3 Worker\n**Category:** 0XX Shared \u002F Infrastructure\n\nManages `hex-relay` as a standalone product deployed into one project environment.\n\n## MANDATORY READ\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Fworker_runtime_contract.md`, `shared\u002Freferences\u002Fcoordinator_summary_contract.md`, and `shared\u002Freferences\u002Fvps_runtime_contract.md`\n**MANDATORY READ:** Load `..\u002Fln-030-vps-bootstrap\u002Freferences\u002Fhex_relay_deploy.md`, `..\u002Fln-030-vps-bootstrap\u002Freferences\u002Fverification_recipes.md`, `agents\u002Fhex-relay\u002FREADME.md`, `agents\u002Fhex-relay\u002Fdocs\u002Fredeploy.md`, and `agents\u002Fhex-relay\u002Fdocs\u002Ftelegram-operator-runbook.md`\n\n---\n\n## Input \u002F Output\n\n| Direction | Content |\n|---|---|\n| Input | `mode`, project\u002FVPS variables, Telegram variables, optional declared users, optional `dry_run`, optional `runId`, optional `summaryArtifactPath` |\n| Output | `vps-hex-relay-lifecycle` summary with status, changes, warnings, blockers, verification, and artifact paths |\n\nIf `summaryArtifactPath` is provided, write the same summary JSON there. If not provided, return the summary inline and write it to the standalone run-scoped path. Generate a standalone `run_id` when `runId` is absent.\n\n## Modes\n\n| Mode | Behavior |\n|---|---|\n| `initial_deploy` | Deploy `agents\u002Fhex-relay\u002F` into an existing project runtime |\n| `redeploy` | Replace source on VPS, rebuild, restart service, verify health |\n| `verify_only` | Inspect service, DB, hooks, Telegram command state without mutation |\n| `sync_users` | Reconcile declared Telegram users\u002Froles through supported relay state |\n\n## Workflow\n\n### Phase 1: Preflight\n\nVerify:\n- Telegram is enabled for deploy\u002Fsync modes\n- `${PROJECT_NAME}`, `${SERVICE_PREFIX}`, `${PROJECT_DIR}`, `${RELAY_HOOK_PORT}` are set\n- project runtime exists\n- `\u002Fetc\u002F${PROJECT_NAME}\u002Fsecrets.env` exists but secret values are not printed\n- `agents\u002Fhex-relay\u002F` source is available locally\n\n### Phase 2: Compatibility\n\nUse `hex_relay_deploy.md`.\n\nDetect old `${SERVICE_PREFIX}-relay-bot.service` and `\u002Fopt\u002F${SERVICE_PREFIX}-relay-bot`.\n\nRule:\n- disable or migrate old relay before enabling `${SERVICE_PREFIX}-hex-relay.service`\n- never run old and new relay units together\n\n### Phase 3: Deploy Or Redeploy\n\nFor `initial_deploy`, install:\n- `\u002Fopt\u002F${SERVICE_PREFIX}-hex-relay`\n- `${SERVICE_PREFIX}-hex-relay.service`\n- project-scope hooks\n- Telegram command registration\n\nFor `redeploy`, follow `agents\u002Fhex-relay\u002Fdocs\u002Fredeploy.md`:\n- package source without `node_modules` or `dist`\n- upload source\n- rebuild with `npm ci && npm run build`\n- restart service\n\n### Phase 4: Users And Telegram\n\nFor `sync_users`, reconcile declared users without exposing tokens.\n\nVerify:\n- allowlist state\n- per-user god target behavior\n- `\u002Fnew_session`, `\u002Fsessions`, `\u002Ftasks`, `\u002Fusers`, `\u002Fusage` command availability\n- BotFather hardening checklist status when applicable\n\n### Phase 5: Health\n\nVerify:\n- `${SERVICE_PREFIX}-hex-relay.service`\n- `GET \u002Fhealth`\n- `relay.db` schema\n- outbox\u002Fdispatch\u002Ftodo state smoke\n- final Claude reply mirrored through Stop hook when full smoke is requested\n\n### Phase 6: Summary\n\nWrite a `vps-hex-relay-lifecycle` summary artifact with deploy\u002Fredeploy\u002Fuser-sync changes and health evidence.\n\n## Critical Rules\n\n- `hex-relay` source is owned by `agents\u002Fhex-relay\u002F`.\n- Do not edit built `dist\u002F` on the VPS.\n- Do not upload `node_modules\u002F`.\n- Do not print or store Telegram\u002Fprovider token values.\n- `dry_run=true` and `verify_only` do not mutate remote state.\n- Product-specific behavior is documented in `agents\u002Fhex-relay\u002FREADME.md`.\n\n## Definition of Done\n\n- [ ] Telegram\u002Frelay gate evaluated and skipped as `N\u002FA:` when disabled.\n- [ ] Old `relay-bot` unit\u002Fpath detected and disabled or reported before enabling `hex-relay`.\n- [ ] `\u002Fopt\u002F${SERVICE_PREFIX}-hex-relay` source installed or verified.\n- [ ] `${SERVICE_PREFIX}-hex-relay.service` active or planned.\n- [ ] Product was built with `npm ci && npm run build` for deploy\u002Fredeploy.\n- [ ] `\u002Fhealth` returns expected service and god-session fields.\n- [ ] Telegram commands and declared users are verified or explicitly gated.\n- [ ] `dry_run=true` \u002F `verify_only` performed no mutation.\n- [ ] Structured `vps-hex-relay-lifecycle` summary artifact written.\n\n---\n\n**Version:** 1.0.0\n**Last Updated:** 2026-05-05\n","\u003C!-- markdownlint-disable MD012 MD022 MD032 MD040 MD041 MD060 -->\n\n> **Paths:** File paths (`shared\u002F`, `agents\u002Fhex-relay\u002F`, `..\u002Fln-030-vps-bootstrap\u002Freferences\u002F`) are relative to skills repo root. If not found at CWD, locate this `SKILL.md` directory and go up one level for repo root.\n\n# ln-033-hex-relay-lifecycle\n\n**Type:** L3 Worker\n**Category:** 0XX Shared \u002F Infrastructure\n\nManages `hex-relay` as a standalone product deployed into one project environment.\n\n## MANDATORY READ\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Fworker_runtime_contract.md`, `shared\u002Freferences\u002Fcoordinator_summary_contract.md`, and `shared\u002Freferences\u002Fvps_runtime_contract.md`\n**MANDATORY READ:** Load `..\u002Fln-030-vps-bootstrap\u002Freferences\u002Fhex_relay_deploy.md`, `..\u002Fln-030-vps-bootstrap\u002Freferences\u002Fverification_recipes.md`, `agents\u002Fhex-relay\u002FREADME.md`, `agents\u002Fhex-relay\u002Fdocs\u002Fredeploy.md`, and `agents\u002Fhex-relay\u002Fdocs\u002Ftelegram-operator-runbook.md`\n\n---\n\n## Input \u002F Output\n\n| Direction | Content |\n|---|---|\n| Input | `mode`, project\u002FVPS variables, Telegram variables, optional declared users, optional `dry_run`, optional `runId`, optional `summaryArtifactPath` |\n| Output | `vps-hex-relay-lifecycle` summary with status, changes, warnings, blockers, verification, and artifact paths |\n\nIf `summaryArtifactPath` is provided, write the same summary JSON there. If not provided, return the summary inline and write it to the standalone run-scoped path. Generate a standalone `run_id` when `runId` is absent.\n\n## Modes\n\n| Mode | Behavior |\n|---|---|\n| `initial_deploy` | Deploy `agents\u002Fhex-relay\u002F` into an existing project runtime |\n| `redeploy` | Replace source on VPS, rebuild, restart service, verify health |\n| `verify_only` | Inspect service, DB, hooks, Telegram command state without mutation |\n| `sync_users` | Reconcile declared Telegram users\u002Froles through supported relay state |\n\n## Workflow\n\n### Phase 1: Preflight\n\nVerify:\n- Telegram is enabled for deploy\u002Fsync modes\n- `${PROJECT_NAME}`, `${SERVICE_PREFIX}`, `${PROJECT_DIR}`, `${RELAY_HOOK_PORT}` are set\n- project runtime exists\n- `\u002Fetc\u002F${PROJECT_NAME}\u002Fsecrets.env` exists but secret values are not printed\n- `agents\u002Fhex-relay\u002F` source is available locally\n\n### Phase 2: Compatibility\n\nUse `hex_relay_deploy.md`.\n\nDetect old `${SERVICE_PREFIX}-relay-bot.service` and `\u002Fopt\u002F${SERVICE_PREFIX}-relay-bot`.\n\nRule:\n- disable or migrate old relay before enabling `${SERVICE_PREFIX}-hex-relay.service`\n- never run old and new relay units together\n\n### Phase 3: Deploy Or Redeploy\n\nFor `initial_deploy`, install:\n- `\u002Fopt\u002F${SERVICE_PREFIX}-hex-relay`\n- `${SERVICE_PREFIX}-hex-relay.service`\n- project-scope hooks\n- Telegram command registration\n\nFor `redeploy`, follow `agents\u002Fhex-relay\u002Fdocs\u002Fredeploy.md`:\n- package source without `node_modules` or `dist`\n- upload source\n- rebuild with `npm ci && npm run build`\n- restart service\n\n### Phase 4: Users And Telegram\n\nFor `sync_users`, reconcile declared users without exposing tokens.\n\nVerify:\n- allowlist state\n- per-user god target behavior\n- `\u002Fnew_session`, `\u002Fsessions`, `\u002Ftasks`, `\u002Fusers`, `\u002Fusage` command availability\n- BotFather hardening checklist status when applicable\n\n### Phase 5: Health\n\nVerify:\n- `${SERVICE_PREFIX}-hex-relay.service`\n- `GET \u002Fhealth`\n- `relay.db` schema\n- outbox\u002Fdispatch\u002Ftodo state smoke\n- final Claude reply mirrored through Stop hook when full smoke is requested\n\n### Phase 6: Summary\n\nWrite a `vps-hex-relay-lifecycle` summary artifact with deploy\u002Fredeploy\u002Fuser-sync changes and health evidence.\n\n## Critical Rules\n\n- `hex-relay` source is owned by `agents\u002Fhex-relay\u002F`.\n- Do not edit built `dist\u002F` on the VPS.\n- Do not upload `node_modules\u002F`.\n- Do not print or store Telegram\u002Fprovider token values.\n- `dry_run=true` and `verify_only` do not mutate remote state.\n- Product-specific behavior is documented in `agents\u002Fhex-relay\u002FREADME.md`.\n\n## Definition of Done\n\n- [ ] Telegram\u002Frelay gate evaluated and skipped as `N\u002FA:` when disabled.\n- [ ] Old `relay-bot` unit\u002Fpath detected and disabled or reported before enabling `hex-relay`.\n- [ ] `\u002Fopt\u002F${SERVICE_PREFIX}-hex-relay` source installed or verified.\n- [ ] `${SERVICE_PREFIX}-hex-relay.service` active or planned.\n- [ ] Product was built with `npm ci && npm run build` for deploy\u002Fredeploy.\n- [ ] `\u002Fhealth` returns expected service and god-session fields.\n- [ ] Telegram commands and declared users are verified or explicitly gated.\n- [ ] `dry_run=true` \u002F `verify_only` performed no mutation.\n- [ ] Structured `vps-hex-relay-lifecycle` summary artifact written.\n\n---\n\n**Version:** 1.0.0\n**Last Updated:** 2026-05-05\n",{"name":5,"license":14,"description":7,"allowed-tools":53},"Bash, Read, mcp__hex-ssh__remote-ssh, mcp__hex-ssh__ssh-read-lines, mcp__hex-ssh__ssh-write-chunk, mcp__hex-ssh__ssh-edit-block, mcp__hex-ssh__ssh-download","main","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Flevn-ln-033-hex-relay-lifecycle",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-12 14:21:24",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add boisenoise\u002Fskills-collections --skill ln-033-hex-relay-lifecycle",{"tool":67,"command":68},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill ln-033-hex-relay-lifecycle",{"tool":70,"command":71},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill ln-033-hex-relay-lifecycle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Flevn-ln-033-hex-relay-lifecycle\u002FSKILL.md",true,[],[76,104,126,151,170,193],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":81,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":48},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[85,86,87,88,89,90,91,92,93,42,94,95,96,97,98,99,100,101,102,28,103],"web","access","web access","official","development","browser","search","data","Tools","fetch","only","youtube","free tools","platform","critical","free","cover","normal","2026",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":108,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":48},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[111],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[106,29,113,114,88,89,115,93,116,117,118,119,39,120,121,99,122,123,124,125,103],"cli","github","license","Budget","credentials","team","catalog","call","discover","external tools","with","scoped","blob",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":130,"sourceHtmlUrl":131,"categories":132,"keywords":138,"publishedAt":48},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[128,114,88,115,139,140,141,142,143,144,99,145,146,147,123,30,148,149,150,125,106,103],"https","email","enrichment","business","evidence","phone","ranking","post","job description","person","candidate","reason",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":155,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":48},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[159,160,161,114,88,115,162,163,139,164,116,165,166,167,143,99,168,169,125,106,103],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":48},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[178,179,114,180,88,181,115,182,183,184,185,186,99,187,188,189,190,191,192,125],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":80,"licenseFileUrl":197,"sourceHtmlUrl":198,"categories":199,"keywords":200,"publishedAt":48},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[201,202,203,114,88,115,204,205,142,206,207,99,208,209,210,211,212,213,214,125],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]