跳到正文
cccskills
免费在 GitHub 公开中文介绍

LifeOSHooks

诊断Claude Code中的LifeOS函数钩子插件,检查加载状态、追查横幅或行未显示的原因,并验证类型、核心副本同步和探测结果。需要达到指定最低构建版本的Claude Code及bun。

原文查看原文说明

The LifeOS function-hook plugin: check it is armed, explain why a line or banner was or was not drawn, regenerate its types after a Claude Code update, sync pure-core copies, run its probes. USE WHEN function hooks, LifeOSHooks, the plugin, hook-drawn lines, banner missing, memory line missing, plugin types, /plugin-types, plugin validate, is the plugin loaded, hooks module. NOT FOR the command hooks under hooks/ (edit directly), the Pulse dashboard (Pulse), or Relay diagnostics (the relay skill).

danielmiessler/LifeOS星标 19,635(GitHub 19,635 + cccskills 0)
集成工具Slack

实测评分 未实测

查看安装方法

适用场景

  • 检查插件是否已加载
  • 查找横幅或行未显示的原因
  • Claude Code更新后检查类型
  • 验证插件并运行探测

中文介绍

功能

LifeOSHooks用于诊断在Claude Code会话中运行的LifeOS函数钩子插件。它会检查插件是否已加载,并报告相应依据;也会调查某一行或横幅为何显示或未显示。Claude Code更新后,它可以准备与该构建版本对应的类型声明,并执行类型检查和测试。修改源代码后,它会同步纯核心副本,也可以验证插件或在无头环境中运行探测。

适用场景

当您想确认插件是否启用、追查界面元素缺失或行为异常,或检查Claude Code更新后的类型不匹配时,可以使用它。它也适用于插件验证和探测。

使用示例

  • “这个会话中的插件已加载并正常工作吗?”
  • “查一下记忆行为什么没有显示。”
  • “检查与最新Claude Code构建版本对应的类型。”

注意事项

Claude Code必须达到hooks/lib/build.ts中声明的最低构建版本,并且需要bun。编辑命令钩子、诊断Pulse仪表盘以及Relay诊断不属于此技能的范围。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
B部分不足资料会更新文件,并提醒声明文件可能含有账户ID。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足资料要求最低Claude Code构建版本和Bun,但安装说明有限。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月28日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(23)

  • SKILL.md12.0 KB
  • .claude/types/lifeos-tools.d.ts1.2 KB
  • assets/chime.wav4.7 KB
  • hooks/hooks.json38 B
  • hooks/lib/board-view.ts17.3 KB
  • hooks/lib/build.ts1.2 KB
  • hooks/lib/context-reduction-core.ts4.2 KB
  • hooks/lib/egress-shapes.ts12.8 KB
  • hooks/lib/glyph-core.ts8.2 KB
  • hooks/lib/injection-shapes.ts5.7 KB
  • hooks/lib/motion-view.ts14.6 KB
  • hooks/lib/outbound-shapes.ts62.6 KB
  • hooks/lib/panes-view.ts2.4 KB
  • hooks/lib/route-label.ts17.9 KB
  • hooks/lib/shell-view.ts2.4 KB
  • hooks/lib/subagent-sandbox-wrap.ts1.7 KB
  • hooks/lib/system-surfaces.ts6.2 KB
  • hooks/LifeOSHooks.ts124.2 KB
  • References/ModuleGotchas.md3.9 KB
  • scripts/MakeChime.ts1.8 KB
  • scripts/SyncCores.ts2.4 KB
  • Setup.md3.3 KB
  • tsconfig.json341 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

LifeOSHooks

Diagnoses the LifeOS function-hook plugin, the in-process half of the hook system (one hooks module Claude Code's function-hook runtime loads once per interactive session; the command hooks under hooks/ remain the out-of-process half): whether it is armed, why a line or banner did or did not draw, and keeping its types and pure-core copies current. State of record: LIFEOS/FUNCTIONHOOKS/ISA.md (maintainer-side; the ISA does not ship).

Ideal State

  • A status answer ("is the plugin loaded and working") says armed or not, on which build, and names its evidence: this session's stamp in MEMORY/STATE/function-hooks/<session>.json (the command hooks read it to go quiet on the lines the plugin draws), hooks/lib/build.ts, and for a headless check the probe's debug log. A verdict with no evidence fails.
  • The check holds the plugin to its standing properties: armed in every interactive session on the declared build, and in a headless session (-p, the SDK, Relay) every hook a passthrough with nothing drawn.
  • A "why did or didn't this draw" answer names the surface that owns the line (§ References) and the cause it found; a guess is labelled as one.
  • After a Claude Code update, .claude/types/claude-code.d.ts was written by the running build, hooks/lib/build.ts names that build, and the typecheck and tests pass; the answer names the old and the new build.
  • claude plugin validate <plugin dir> passes; its hooked-events list matches the ISA's closed criteria (/ic checks this).
  • The pure-core copies under hooks/lib/ equal their sources (tests/parity.test.ts; source tree only, not in the public release payload).

Anti-criteria

  • No diagnostic $.ui.log line is ever added to the live module, not even for one probe run. In any session that loads the edited module (§ Gotchas, reload), every $.ui.log line prints into the principal's transcript: one temporary diagnostic line, printed once per tool call, filled the screen (2026-10-02). Probe in a copy run with claude --plugin-dir <copy> and --debug-file, or put the diagnostic in pushEvent, which only reaches the events log.
  • A report never tells the principal a save already reloaded an open session; a check of a change in a live session starts with /reload-plugins (2026-10-11: a pane removed on disk kept drawing its old text in open sessions until a reload).

Intent Routing

This skill is its own single intent; its context files:

FileRead when
References/ModuleGotchas.mdediting the hooks module, or a draw, repaint or hand-over question the § References list below does not answer: engine API shapes, registration rules, scrollback and repaint behaviour
Setup.mdinstalling the plugin on a new machine, or filling in this install's loading topology in the USER Config.md

Tool contract

  • Validate: claude plugin validate <plugin dir> (lists every hooked event and $ call).
  • Typecheck: cd <plugin dir> && bunx tsc --noEmit -p tsconfig.json.
  • Tests (source tree only; they are not in the public release payload): cd <plugin dir> && bun test ./tests. Running them from the install root hit EMFILE (2026-10-01).
  • Sync cores after editing a source: bun <plugin dir>/scripts/SyncCores.ts.
  • After a Claude Code update: the plugin declarations are Claude Code's own and never ship with the plugin; each install generates its own from the build it runs. /plugin-types is gone since 2.1.287, so the source is the running build's plugin-authoring skill, which provides that build's declarations when it loads: put them at .claude/types/claude-code.d.ts (their first line names the build), set TYPES_BUILD in hooks/lib/build.ts, typecheck, and run the tests (2026-10-01). The MCP declarations (.claude/types/claude-code-mcp.d.ts) copy connector tool descriptions verbatim, and some connectors (Slack) embed the logged-in account's user id in them; replace any such id with <slack-user-id> before the file is committed (2026-10-13).
  • Headless probe: claude -p "Reply OK." --plugin-dir <plugin dir> --debug-file <log> --max-turns 1, then grep the log for settled and failed to load.
  • Host I/O from the module goes only through LIFEOS/TOOLS/HookBridge.ts <verb>.

Setup

Needs Claude Code at or above the build named in hooks/lib/build.ts (MIN_BUILD) and bun. The plugin holds no personal data; its one user setting is forceBackground in its plugin manifest (.claude-plugin/plugin.json, or the marketplace entry when the install keeps the manifest there), off by default.

  1. Load it. Either put this folder under the skills directory, where Claude Code loads it as LifeOSHooks@skills-dir and hot-reloads it on every save, or list it in a folder marketplace (claude plugin marketplace add <folder>, then claude plugin install <name>@<marketplace>) and disable the skills-dir copy so only one loads.
  2. Record how it loads: with a folder marketplace, fill in <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/LifeOSHooks/Config.md (marketplace, mods loaded from it, disabled skills-dir copies, reload consequence); Setup.md § Fill in documents every line. Loaded straight from the skills folder, the file is optional.
  3. Check it: claude plugin validate <plugin dir>, then the headless probe in § Tool contract. Success is a settled line and no failed to load line in the debug log.

References

Which surface owns each line and decision. Build-specific numbers live in the ISA (redraw timers, scan counts) and in the module constants (the reaper interval: hooks/LifeOSHooks.ts TREE_MS).

  • Nothing in the answer block is drawn by the plugin: the banner is the model's own first line and the 🗣️ closer its last. Memory and health lines are logged, not drawn (the board pane that showed them was removed 2026-10-11), the interview chip is on the statusline, the ⚙️ ledger is logged, and the band above the prompt carries only the ISA chip.
  • The plugin toasts each ascent-state transition (the statusline draws the ascent strip), puts the Security Protocol and a data-class ceiling into every subagent brief. It no longer tags MCP and web results as data or marks the session after an outside read (retired 2026-10-24; the Security Protocol governs outside content, see LIFEOS/DOCUMENTATION/Hooks/HookSystem.md § Native enforcement).
  • The plugin rewrites a Bash command in five ways, each shown on the tool row's dim mark: npm and npx become bun, an export LIFEOS_DISPATCH_ID=...; prefix binds a codex-backed run to its dispatch, git and gh status paths go through rtk, [REDACTED-SECRET-xxxx] tags are swapped back to the real values the principal's own prompt carried, and a subagent's commands are wrapped in sandbox-exec (macOS only, and only with LIFEOS_SUBAGENT_SANDBOX=on; otherwise they run unwrapped with a before-and-after detector).
  • Refusals: the plugin refuses sweeping git add, a plain git commit in the private trees, a gh comment with no agent attribution, and a WebFetch carrying a secret tag. Taint tracking (TaintGuard and the plugin's mark) retired 2026-10-24: no hook judges outbound Bash after an outside read; native permission rules hold the outbound actions. In a headless session the plugin is not armed and passes every call through.
  • Stray processes: every TREE_MS the poller hands LIFEOS/TOOLS/SessionTree.ts (the session-tree bridge verb) the feed's own agent statuses and stop times, plus its record of which subagent ran each Bash command. The reaper kills this session's orphaned and agent-stopped processes and writes the state file Vigil's running adapter reads. The 1 s agent poll writes each agent's one subagent_stop row. Nothing in LifeOS draws agents, workflows or running shells: Claude Code's /tasks, /workflows, agent panel, Bash pill and spinner show them (2026-10-11).
  • Routes: the DISPATCH line carries provider, model and reasoning effort from hooks/lib/route-label.ts. A mark is ✓ only on codex's own session log or the engine-resolved model (LIFEOS/TOOLS/RouteTrail.ts), and a helper run carries LIFEOS_DISPATCH_ID so it binds to its own dispatch.

Gotchas

  • Whether an open session runs the current module depends on how the plugin loaded. This install's loading topology (which marketplace, which mods, which skills-folder copy is disabled) is recorded in <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/LifeOSHooks/Config.md (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude); read it before answering a reload question. A plugin loaded from a folder marketplace reaches no open session until /reload-plugins there (2.1.287+); claude plugin update reports "nothing to update" because it reads the folder at load (§ Anti-criteria holds the reporting rule). A plugin loaded straight from a skills folder (LifeOSHooks@skills-dir) is watched instead (plugin-authoring reference, 2.1.296): every save, from any session, hot-reloads the module in every open session and prints a <plugin>: reloaded (N hooks: …) line into each transcript. The marketplace wiring is a folder marketplace listing this folder by relative path (claude plugin marketplace add <folder>, then claude plugin install <name>@<marketplace>) with the <name>@skills-dir copy disabled in settings, so the module never loads twice; /ic plugin-load holds it wherever .claude-plugin/marketplace.json exists. Because the loaded module can lag the file, a native command hook never fast-exits on the bare stamp: it reads hookCovers(sid, cap), and the cap is written by HookBridge prompt-context, which only the module that hands the work over calls. Adding a new hand-over means adding a cap (hooks/lib/function-hooks.ts HookCap), never a stamp check.
  • Transcript redaction (ISC-45) replaces a pasted secret with a tag in every model-facing row. It reduces what reaches disk and is no guarantee, so a secret pasted into a prompt is still treated as exposed and rotated. A plugin reload drops the tag map; a literal tag then runs harmlessly and the tool fails on it, which is the visible signal to paste the value again. Since 2026-09-07 (ISC-49) tool results are walked too: a key that a Bash, Read or WebFetch returns is tagged before the model sees it, and the tag swaps back in Bash, WebFetch, Write and Edit. Shapes only (SECRET_VALUE_SHAPES), never entropy, emails or IPs.
  • Module-authoring facts (engine API shapes since 2.1.273 and 2.1.280, registration rules, scrollback and repaint behaviour, the model-call and band rules) live in References/ModuleGotchas.md.

Examples

User: "is the plugin loaded and working this session"
→ Verdict: armed on build <N> (or not), with the stamp file's caps for this session and `hooks/lib/build.ts` quoted; a headless probe's `settled` / `failed to load` lines when the question is about a fresh session
User: "types mismatch 2.1.261 vs build 2.1.263 statusline warning"
→ Declarations for 2.1.263 regenerated from the running build's plugin-authoring skill, `TYPES_BUILD` set to 2.1.263, typecheck and tests pass; the answer names both builds
User: "why is the memory line missing"
→ The memory line is logged, not drawn anywhere: the 🧠 chip left the statusline on 2026-09-20 and the board pane on 2026-10-11, so the answer points at the per-session lines MemoryTurnStart writes (`HookBridge memory-line <sid>`), not at the plugin or the statusline

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

AnnualReports

免费有简介

按类别或厂商查找并获取网络安全报告,比较威胁、勒索软件、数据泄露、云安全和AI趋势。分析会注明每项数据的厂商、年份及报告,并分别呈现来源间的分歧。

  • 按类别查找威胁报告
  • 获取指定厂商的报告
  • 比较多家厂商的勒索软件趋势
danielmiessler/LifeOS2万2026年10月28日 更新

ApertureOscillation

免费有简介

通过三轮分析,对比单个功能或组件的设计需求与整个系统的目标,梳理两者的冲突、合适的实现范围,以及方案是否符合整体方向。

  • 判断服务或库是否应拆分
  • 比较功能需求与产品方向
  • 检查新组件是否符合现有系统
danielmiessler/LifeOS2万2026年10月28日 更新

Aphorisms

免费有简介

按文章主题寻找格言或引文,按相关程度排序,并附上作者和推荐理由。可添加带出处的引文、按主题研究思想家的言论、整理使用记录,帮助避免重复引用。

  • 为新闻简报寻找引文
  • 保存有出处且不重复的引文
  • 按主题研究思想家的言论
danielmiessler/LifeOS2万2026年10月28日 更新

Art

免费有简介

按用途选择制作流程,生成博客插图、技术图解、比较图、漫画和图标等视觉内容,并输出供预览的图像。

  • 制作博客标题图
  • 解释系统结构
  • 展示比较或时间线
danielmiessler/LifeOS2万2026年10月28日 更新

ArtDirection

免费有简介

依据简报和制作标准评估图片、影片、幻灯片及网站页面截图,由视觉评审给出评分和缺陷优先级,支持有限轮次的修改;通过评审后才能交付,并可记录人工评分供后续校准。

  • 按优先级整理图片修改项
  • 依标准评估影片或幻灯片
  • 发布前检查视觉效果
danielmiessler/LifeOS2万2026年10月28日 更新

ArXiv

免费有简介

按主题、研究领域或论文编号查找 arXiv 论文,并整理标题、作者、摘要和链接;查看新投稿,也可在有内容时获取 AlphaXiv 的人工智能生成概述。

  • 查看人工智能和机器学习新论文
  • 查找特定主题的论文
  • 按论文编号或 arXiv 网址查询
danielmiessler/LifeOS2万2026年10月28日 更新

查看 danielmiessler 的全部技能

报告此技能的问题