[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698RP6WVCYC38YPEECMADB5":3,"skill-same:01M698RP6WVCYC38YPEECMADB5":124},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M698RP6WVCYC38YPEECMADB5","session-viewer",null,"Render Codex, Claude Code, OpenClaw, or Pi session JSONL transcripts as a searchable, shareable single-file HTML viewer.","openclaw\u002Fagent-skills","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698R9TBKA3SKB6WVC50J9NJ",1118,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002FSKILL.md",[],[18,19,20,9,21,22,23,24,25,26,27,28,29,30,31],"session viewer","session","viewer","codex","code","file","pi","html","single-file","as","render","transcripts","jsonl","single","2026-11-10 10:12:30",false,"---\nname: session-viewer\ndescription: \"Render Codex, Claude Code, OpenClaw, or Pi session JSONL transcripts as a searchable, shareable single-file HTML viewer.\"\n---\n\n# Session Viewer\n\nUse when asked to view, export, inspect, or share a Codex, Claude Code, OpenClaw, or Pi session transcript in a browser.\n\n## Commands\n\nResolve `SESSION_VIEWER_SKILL_DIR` to the directory containing this `SKILL.md`.\nUse that installed source for commands, independent of the current repository.\n\nWhen the session path is not known and the `agent-transcript` skill is available, use it first to find the likely JSONL session:\nResolve `TRANSCRIPT_SKILL_DIR` from that skill's actual installation before running:\n\n```bash\n\"$TRANSCRIPT_SKILL_DIR\u002Fscripts\u002Fagent-transcript\" find \\\n  --query \"$USER_GOAL_OR_TITLE $BRANCH_OR_URL\" \\\n  --cwd \"$PWD\" \\\n  --since-days 14\n```\n\nPick the highest-confidence `file` result, then render it with `session-viewer`.\n\nRender with the resolved installation:\n\n```bash\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --out \u002Ftmp\u002Fsession.html --open\n```\n\nUseful modes:\n\n```bash\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --out session.html\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --raw --out session.html\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" --blank --out viewer.html --open\n```\n\nDefaults:\n\n- detects `codex`, `claude`, or `pi-openclaw`\n- embeds normalized session data into one HTML file\n- keeps tool input\u002Foutput text in the DOM so browser search can find it\n- reads the complete session file, preserving full history in both export modes\n- `--raw` embeds the original JSONL and lets the browser parse it\n- `--blank` creates a reusable file-picker viewer\n\nFor an explicitly partial export, use `--max-read-bytes N` with a positive integer byte limit (for example, `--max-read-bytes 8388608` for 8 MiB). Oversized files retain the head and tail, with a visible omission warning in the CLI and exported viewer. Truncated boundary records may be omitted; `--raw` embeds only the retained JSONL. Files at or below the limit remain complete. Short reads are retried; an unexpected end of file fails the export instead of reporting a complete read.\n\nThis opt-in read limit applies only to CLI file exports. The browser's file picker continues to load complete files.\n\n## Where Sessions Live\n\nCodex:\n\n```bash\nfind \"${CODEX_HOME:-$HOME\u002F.codex}\u002Fsessions\" -name 'rollout-*.jsonl' -type f | sort\nls -t \"${CODEX_HOME:-$HOME\u002F.codex}\"\u002Fsessions\u002F*\u002F*\u002F*\u002Frollout-*.jsonl | head\n```\n\nCurrent OpenClaw stores session indexes and transcripts in per-agent SQLite databases.\nUse native session discovery:\n\n```bash\nopenclaw sessions --agent \"\u003CagentId>\" --json\n```\n\nThis lists sessions; it does not export a JSONL transcript.\nThe viewer requires a supported JSONL transcript, not a SQLite database or session-list JSON.\nUse OpenClaw's native session view when no compatible JSONL export is available.\nSee the [OpenClaw sessions reference](https:\u002F\u002Fdocs.openclaw.ai\u002Fcli\u002Fsessions).\n\nLegacy OpenClaw JSONL:\n\n```bash\nAGENT_ID=\"\u003CagentId>\"\nSESSION_DIR=\"${OPENCLAW_STATE_DIR:-$HOME\u002F.openclaw}\u002Fagents\u002F$AGENT_ID\u002Fsessions\"\nls -t \"$SESSION_DIR\"\u002F*.jsonl | head\nfind \"${OPENCLAW_STATE_DIR:-$HOME\u002F.openclaw}\u002Fagents\" -path '*\u002Fsessions\u002F*.jsonl' -type f | sort\n```\n\nOnly legacy file stores use `sessions.json` beside those transcripts to map session keys to ids.\nFor standalone Pi, select its actual JSONL transcript rather than assuming the OpenClaw directory layout.\n\nClaude Code:\n\n```bash\nfind \"$HOME\u002F.claude\u002Fprojects\" -name '*.jsonl' -type f | sort\nls -t \"$HOME\u002F.claude\u002Fprojects\"\u002F**\u002F*.jsonl | head\n```\n\nSome Claude installs also keep exported JSON\u002FJSONL under project-specific cache folders; prefer the newest JSONL with the target repo path in its parent folder.\n\n## Development\n\nScripts are native Node TypeScript. Keep them erasable:\n\n- ok: types, interfaces, unions, `satisfies`\n- avoid: enums, namespaces, decorators, parameter properties\n- no tsconfig path aliases; use relative imports\n\nImporter ownership:\n\n- `scripts\u002Fimporters\u002Fcodex.ts`: Codex rollout JSONL\n- `scripts\u002Fimporters\u002Fclaude.ts`: Claude Code JSONL\n- `scripts\u002Fimporters\u002Fpi-openclaw.ts`: Pi\u002FOpenClaw session JSONL\n\nValidate:\n\n```bash\nnpm ci --ignore-scripts\nnpm run typecheck\nnode --test skills\u002Fsession-viewer\u002Fscripts\u002Fsession-viewer.test.ts\nscripts\u002Fvalidate-skills\n```\n","# Session Viewer\n\nUse when asked to view, export, inspect, or share a Codex, Claude Code, OpenClaw, or Pi session transcript in a browser.\n\n## Commands\n\nResolve `SESSION_VIEWER_SKILL_DIR` to the directory containing this `SKILL.md`.\nUse that installed source for commands, independent of the current repository.\n\nWhen the session path is not known and the `agent-transcript` skill is available, use it first to find the likely JSONL session:\nResolve `TRANSCRIPT_SKILL_DIR` from that skill's actual installation before running:\n\n```bash\n\"$TRANSCRIPT_SKILL_DIR\u002Fscripts\u002Fagent-transcript\" find \\\n  --query \"$USER_GOAL_OR_TITLE $BRANCH_OR_URL\" \\\n  --cwd \"$PWD\" \\\n  --since-days 14\n```\n\nPick the highest-confidence `file` result, then render it with `session-viewer`.\n\nRender with the resolved installation:\n\n```bash\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --out \u002Ftmp\u002Fsession.html --open\n```\n\nUseful modes:\n\n```bash\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --out session.html\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" \u003Csession.jsonl> --raw --out session.html\nnode \"$SESSION_VIEWER_SKILL_DIR\u002Fscripts\u002Fsession-viewer.ts\" --blank --out viewer.html --open\n```\n\nDefaults:\n\n- detects `codex`, `claude`, or `pi-openclaw`\n- embeds normalized session data into one HTML file\n- keeps tool input\u002Foutput text in the DOM so browser search can find it\n- reads the complete session file, preserving full history in both export modes\n- `--raw` embeds the original JSONL and lets the browser parse it\n- `--blank` creates a reusable file-picker viewer\n\nFor an explicitly partial export, use `--max-read-bytes N` with a positive integer byte limit (for example, `--max-read-bytes 8388608` for 8 MiB). Oversized files retain the head and tail, with a visible omission warning in the CLI and exported viewer. Truncated boundary records may be omitted; `--raw` embeds only the retained JSONL. Files at or below the limit remain complete. Short reads are retried; an unexpected end of file fails the export instead of reporting a complete read.\n\nThis opt-in read limit applies only to CLI file exports. The browser's file picker continues to load complete files.\n\n## Where Sessions Live\n\nCodex:\n\n```bash\nfind \"${CODEX_HOME:-$HOME\u002F.codex}\u002Fsessions\" -name 'rollout-*.jsonl' -type f | sort\nls -t \"${CODEX_HOME:-$HOME\u002F.codex}\"\u002Fsessions\u002F*\u002F*\u002F*\u002Frollout-*.jsonl | head\n```\n\nCurrent OpenClaw stores session indexes and transcripts in per-agent SQLite databases.\nUse native session discovery:\n\n```bash\nopenclaw sessions --agent \"\u003CagentId>\" --json\n```\n\nThis lists sessions; it does not export a JSONL transcript.\nThe viewer requires a supported JSONL transcript, not a SQLite database or session-list JSON.\nUse OpenClaw's native session view when no compatible JSONL export is available.\nSee the [OpenClaw sessions reference](https:\u002F\u002Fdocs.openclaw.ai\u002Fcli\u002Fsessions).\n\nLegacy OpenClaw JSONL:\n\n```bash\nAGENT_ID=\"\u003CagentId>\"\nSESSION_DIR=\"${OPENCLAW_STATE_DIR:-$HOME\u002F.openclaw}\u002Fagents\u002F$AGENT_ID\u002Fsessions\"\nls -t \"$SESSION_DIR\"\u002F*.jsonl | head\nfind \"${OPENCLAW_STATE_DIR:-$HOME\u002F.openclaw}\u002Fagents\" -path '*\u002Fsessions\u002F*.jsonl' -type f | sort\n```\n\nOnly legacy file stores use `sessions.json` beside those transcripts to map session keys to ids.\nFor standalone Pi, select its actual JSONL transcript rather than assuming the OpenClaw directory layout.\n\nClaude Code:\n\n```bash\nfind \"$HOME\u002F.claude\u002Fprojects\" -name '*.jsonl' -type f | sort\nls -t \"$HOME\u002F.claude\u002Fprojects\"\u002F**\u002F*.jsonl | head\n```\n\nSome Claude installs also keep exported JSON\u002FJSONL under project-specific cache folders; prefer the newest JSONL with the target repo path in its parent folder.\n\n## Development\n\nScripts are native Node TypeScript. Keep them erasable:\n\n- ok: types, interfaces, unions, `satisfies`\n- avoid: enums, namespaces, decorators, parameter properties\n- no tsconfig path aliases; use relative imports\n\nImporter ownership:\n\n- `scripts\u002Fimporters\u002Fcodex.ts`: Codex rollout JSONL\n- `scripts\u002Fimporters\u002Fclaude.ts`: Claude Code JSONL\n- `scripts\u002Fimporters\u002Fpi-openclaw.ts`: Pi\u002FOpenClaw session JSONL\n\nValidate:\n\n```bash\nnpm ci --ignore-scripts\nnpm run typecheck\nnode --test skills\u002Fsession-viewer\u002Fscripts\u002Fsession-viewer.test.ts\nscripts\u002Fvalidate-skills\n```\n",{"name":5,"description":7},"main","c7cde4a7bc4b419f3f3869390a5e06c341fae07b","skills\u002Fsession-viewer",121,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills","https:\u002F\u002Fgithub.com\u002Fopenclaw","https:\u002F\u002Fopenclaw.ai","Your personal, open source AI assistant.","2026-11-10 17:52:00",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add openclaw\u002Fagent-skills --skill session-viewer",{"tool":52,"command":53},"bunx","bunx skills add openclaw\u002Fagent-skills --skill session-viewer",{"tool":55,"command":56},"pnpm","pnpm dlx skills add openclaw\u002Fagent-skills --skill session-viewer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002FSKILL.md",true,[60,66,70,76,80,84,88,92,96,100,104,108,112,116,120],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"agents\u002Fopenai.yaml","REFERENCE","参考文档",207,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fagents\u002Fopenai.yaml",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"package.json",23,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fpackage.json",{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"scripts\u002Fcore\u002Fdetect.ts","SCRIPT","脚本",1066,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fcore\u002Fdetect.ts",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Fcore\u002Fjsonl.ts",7658,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fcore\u002Fjsonl.ts",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fcore\u002Ftypes.ts",1050,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fcore\u002Ftypes.ts",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fhtml.ts",38119,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fhtml.ts",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fimporters\u002Fclaude.ts",5583,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fimporters\u002Fclaude.ts",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fimporters\u002Fcodex.ts",8187,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fimporters\u002Fcodex.ts",{"path":97,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Fimporters\u002Fpi-openclaw.ts",7800,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fimporters\u002Fpi-openclaw.ts",{"path":101,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Fopen-browser.ts",435,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fopen-browser.ts",{"path":105,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Fread-session.ts",1513,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fread-session.ts",{"path":109,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Fsession-viewer.test.ts",34604,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fsession-viewer.test.ts",{"path":113,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":114,"sourceHtmlUrl":115},"scripts\u002Fsession-viewer.ts",4982,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fsession-viewer.ts",{"path":117,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":118,"sourceHtmlUrl":119},"scripts\u002Fstyles.ts",13333,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Fscripts\u002Fstyles.ts",{"path":121,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":122,"sourceHtmlUrl":123},"tsconfig.json",276,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsession-viewer\u002Ftsconfig.json",[125,147,165,182,203,225],{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":32},"01M698RR7FCM03FP4QX4D38ECP","team-handoff","Hand local work to a shared OpenClaw Gateway: start a worktree session there as yourself in one request, seeded with a handoff, and get the session URL back.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fteam-handoff\u002FSKILL.md",[],[132,133,134,9,135,136,137,138,27,139,140,141,19,142,143,144,145,146],"team handoff","handoff","team","shared","back","gateway","with","work","get","worktree","local","start","URL","hand","request",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":32},"01M698RN1Q9WRY11XB9CBEY6JN","readme-standard","House README standard: structure, badge row, tone, per-archetype templates, and verification gates for steipete\u002Fopenclaw repos.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Freadme-standard\u002FSKILL.md",[],[154,155,156,9,157,158,159,160,161,162,163,164],"standard","README","readme standard","verification","structure","for","repos","templates","verification gates","tone","gates",{"skillNo":166,"name":133,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":175,"publishedAt":32},"01M698RM0PA5ZM69GGT4ABAV92","Clipboard-ready handoff prompt for another agent to investigate or continue a task.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhandoff\u002FSKILL.md",[170],{"categoryNo":171,"categoryName":172,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[133,176,177,178,179,180,159,181],"prompt","task","investigate","clipboard","ready","continue",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":32},"01M698RJKDRFJJT0755672M39N","crabbox","Crabbox\u002FTestbox remote proof: portable provider routing, untrusted isolation, Linux\u002FmacOS\u002FWindows\u002FWSL2, live E2E, diagnostics, cleanup.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fcrabbox\u002FSKILL.md",[],[184,189,190,191,192,193,194,195,196,197,198,199,200,201,202],"macos","routing","windows","provider","linux","remote","e2e","cleanup","proof","live","diagnostics","isolation","portable","provider routing",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":214,"publishedAt":32},"01M698RHA9XNH7TEX0BKY9SJ0E","behavior-validator","Source-blind user behavior validation against a prewritten contract for apps, CLIs, APIs, and generated artifacts.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbehavior-validator\u002FSKILL.md",[209],{"categoryNo":210,"categoryName":211,"taxonomyType":212,"taxonomyTypeDesc":213},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[215,216,217,159,218,219,220,221,222,223,224],"behavior","validator","behavior validator","user","artifacts","apps","source","generated","contract","validation",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":231,"publishedAt":32},"01M698RFQVT9KDH7HHBGCD6C50","beam","Share a redacted coding session or hand its logical conversation to an authenticated OpenClaw Gateway.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbeam\u002FSKILL.md",[],[227,232,145,9,233,137,234,19],"share","conversation","coding"]