Files
Selig 4c966a3ad2 Initial commit: OpenClaw Skill Collection
6 custom skills (assign-task, dispatch-webhook, daily-briefing,
task-capture, qmd-brain, tts-voice) with technical documentation.
Compatible with Claude Code, OpenClaw, Codex CLI, and OpenCode.
2026-03-13 10:58:30 +08:00

100 lines
4.2 KiB
JSON
Executable File

{
"title": "Other platforms",
"content": "tail -f ~/.openclaw/gateway.log\ntypescript theme={null}\nimport { test } from \"vitest\";\nimport { createHookEvent } from \"./src/hooks/hooks.js\";\nimport myHandler from \"./hooks/my-hook/handler.js\";\n\ntest(\"my handler works\", async () => {\n const event = createHookEvent(\"command\", \"new\", \"test-session\", {\n foo: \"bar\",\n });\n\nawait myHandler(event);\n\n// Assert side effects\n});\n\nGateway startup\n ↓\nScan directories (workspace → managed → bundled)\n ↓\nParse HOOK.md files\n ↓\nCheck eligibility (bins, env, config, os)\n ↓\nLoad handlers from eligible hooks\n ↓\nRegister handlers for events\n\nUser sends /new\n ↓\nCommand validation\n ↓\nCreate hook event\n ↓\nTrigger hook (all registered handlers)\n ↓\nCommand processing continues\n ↓\nSession reset\nbash theme={null}\n ls -la ~/.openclaw/hooks/my-hook/\n # Should show: HOOK.md, handler.ts\n bash theme={null}\n cat ~/.openclaw/hooks/my-hook/HOOK.md\n # Should have YAML frontmatter with name and metadata\n bash theme={null}\n openclaw hooks list\n bash theme={null}\nopenclaw hooks info my-hook\nbash theme={null}\n openclaw hooks list\n # Should show ✓ next to enabled hooks\n bash theme={null}\n ./scripts/clawlog.sh | grep hook\n bash theme={null}",
"code_samples": [
{
"code": "### Test Hooks Directly\n\nTest your handlers in isolation:",
"language": "unknown"
},
{
"code": "## Architecture\n\n### Core Components\n\n* **`src/hooks/types.ts`**: Type definitions\n* **`src/hooks/workspace.ts`**: Directory scanning and loading\n* **`src/hooks/frontmatter.ts`**: HOOK.md metadata parsing\n* **`src/hooks/config.ts`**: Eligibility checking\n* **`src/hooks/hooks-status.ts`**: Status reporting\n* **`src/hooks/loader.ts`**: Dynamic module loader\n* **`src/cli/hooks-cli.ts`**: CLI commands\n* **`src/gateway/server-startup.ts`**: Loads hooks at gateway start\n* **`src/auto-reply/reply/commands-core.ts`**: Triggers command events\n\n### Discovery Flow",
"language": "unknown"
},
{
"code": "### Event Flow",
"language": "unknown"
},
{
"code": "## Troubleshooting\n\n### Hook Not Discovered\n\n1. Check directory structure:",
"language": "unknown"
},
{
"code": "2. Verify HOOK.md format:",
"language": "unknown"
},
{
"code": "3. List all discovered hooks:",
"language": "unknown"
},
{
"code": "### Hook Not Eligible\n\nCheck requirements:",
"language": "unknown"
},
{
"code": "Look for missing:\n\n* Binaries (check PATH)\n* Environment variables\n* Config values\n* OS compatibility\n\n### Hook Not Executing\n\n1. Verify hook is enabled:",
"language": "unknown"
},
{
"code": "2. Restart your gateway process so hooks reload.\n\n3. Check gateway logs for errors:",
"language": "unknown"
},
{
"code": "### Handler Errors\n\nCheck for TypeScript/import errors:",
"language": "unknown"
}
],
"headings": [
{
"level": "h3",
"text": "Test Hooks Directly",
"id": "test-hooks-directly"
},
{
"level": "h2",
"text": "Architecture",
"id": "architecture"
},
{
"level": "h3",
"text": "Core Components",
"id": "core-components"
},
{
"level": "h3",
"text": "Discovery Flow",
"id": "discovery-flow"
},
{
"level": "h3",
"text": "Event Flow",
"id": "event-flow"
},
{
"level": "h2",
"text": "Troubleshooting",
"id": "troubleshooting"
},
{
"level": "h3",
"text": "Hook Not Discovered",
"id": "hook-not-discovered"
},
{
"level": "h3",
"text": "Hook Not Eligible",
"id": "hook-not-eligible"
},
{
"level": "h3",
"text": "Hook Not Executing",
"id": "hook-not-executing"
},
{
"level": "h3",
"text": "Handler Errors",
"id": "handler-errors"
}
],
"url": "llms-txt#other-platforms",
"links": []
}