npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lamarck-skill

v5.21.0

Published

agent skill 的生产环境自进化系统 | A production self-evolving system for agent skills: every installed skill keeps accumulating evidence from real usage and evolves when the gate opens - governed, user-authorized, reversible. Adapters for Claude Code, Codex, Cursor

Readme

lamarck

English | 简体中文

npm ci license selftest

agent skill 的生产环境自进化系统。 不是给某一个手工圈选的 skill 做一次性 优化:装一次,你的全部已装 skill(几百个也一样)在真实使用中持续积累证据, 满足条件时进化——编辑经你批准落地,或对你显式升到 auto 的 skill 由 replay 把关、事后报告。lamarck 同时在运行中按同一套规则进化自己(自身永不 auto)。 使用中获得的性状写回 skill 文件;长期无用的部分废退(修剪)。每个不可逆动作 都经用户授权、落账、可回滚:治理是全量进化敢做的前提。harness 无关: Claude Code、Codex、Cursor、pi 四家适配器随包,共写同一条证据账本。

npx lamarck-skill

赛道对照

| | SkillOpt | darwin-skill | lamarck | |---|---|---|---| | 隐喻 | 训练场 | 考场 | 生活 | | 信号 | 基准分数 | 合成测试 prompt + 评委团 | 生产遥测:真实调用、真实用户纠正 | | 触发 | 离线运行 | 手动运行 | hook 观察每次调用,按阈值批量评估 | | 尺子 | 固定 | 固定 9 维(SkillLens) | 逐 skill、动态、git 版本化——从证据结晶,随 skill 进化 | | 回归测试 | 基准 | 手工编写 prompt | 从真实痕迹重放(零人工编写) | | 方向 | 改进 | 改进 | 改进且修剪(用进废退) | | 覆盖面 | 每次针对一个基准目标 | 你逐个指定的 skill,各需配测试题 | 全部已装 skill,被动零配置——逐 skill 治理分级 |

保留了两家的精华:SkillOpt 的验证门、有界编辑与拒绝缓冲;darwin 的 git 回滚、 成对盲评(仅难判时升 3 评委多数票)与人在环检查点。

机制

  1. 记账(collector——参考适配器里是 PostToolUse hook):每次 skill 调用 → data/pending.jsonl,附目标 skill 的内容哈希(ver),供按版本分窗做 退化检测。
  2. 轻循环(trigger + executor——参考适配器里是 Stop hook):回合末 hook 把 评估入队交给会话外的无头运行(默认),或把迷你协议注入本回合 (isolation: inline)——每回合不重载 SKILL.md。四维 verdict 对照该 skill rubric 中场景匹配的条目判定后落 data/ledger.jsonl;用户纠正 n=1 结晶为一条带出处的 rubric 条目;经验沉淀 进 data/learnings/;回归用例进 data/replays/——既收割失败,也收割语料 尚未覆盖其场景的 clean 调用。触发时机可配:每回合 / 仅手动 / 阈值批量 (默认 5)。
  3. 进化(门控):≥2 次独立同类 gap → 综合全部证据生成有界编辑提案 → 用户三选一(现在就改 / 只留提案 / 否决)。编辑后先 replay 重放,下次真实 调用做成对盲评,版本分窗健康度做统计兜底。任何退化 → 回滚提案。
  4. 信任阶梯:config.json 给每个 skill 定级 auto / evolve / suggest / observe(默认 observe;插件上限 suggest;新装 skill 继承默认)。auto 是 挣来的自治:过门编辑不问直接落地——replay 重放升为放行条件(不过即时回滚), 每笔事后报告、落账、一步 git revert 可撤。lamarck 自身、Iron Rules 与 插件无论怎么配都必须显式批准。
  5. 收敛:不是每次迭代都有收益。清白连击(默认 10)后 skill 进入 stable ——评估降为抽查(每 5 条抽 1)加一行 stable-skip 记录;任何用户纠正、 基因变化或新场景立即唤醒。长清白连击本身就是证据:report 把它呈现为 生产可靠性证书。

一切不可逆动作需用户明确确认。遥测永不出机(已 .gitignore);rubric 与 代码同库版本化。

架构:core + 适配器

core 是 harness 无关的——数据文件、优化门、评估协议 (protocol/light-loop.md,单源,逐字注入)没有 任何 Claude 特有内容。harness 通过适配器接入,三个角色——collector (每次调用追加一行 pending)、trigger(决定何时评估)、executor(执行协议 的模型)——契约见 protocol/adapter-contract.md。全部适配器 共享同一遥测库:一个 skill 在多个 harness 被使用,证据汇进同一条账本—— 且每条记录带 harness 标签。场景围栏把跨 harness 证据当跨场景证据:某一家 的证据只能给该家加条件分支,改不动别家依赖的共核。冲突检测归机器,裁决归你 (还是那道三选一)。

| Harness | 机制 | 角色 | 状态 | |---|---|---|---| | Claude Code | PostToolUse + Stop hooks(scripts/) | 三角色全 | 参考实现,生产中 | | Codex >= 0.142 | hooks.json shim(adapters/codex)——stdin 字段与 Stop 契约兼容 Claude | 三角色全 | 机制级实测(selftest,按公开文档字段);欢迎真实会话反馈 | | Cursor | hooks.json shim(adapters/cursor)——stop 经 followup_message 注入 | 三角色全 | 机制级实测;欢迎真实会话反馈 | | pi | 单个 TypeScript extension(adapters/pi) | 三角色全 | 按公开 API 编写;尚未在真实 pi 中运行 |

Cursor 与 pi 原生发现 ~/.claude/skills/,Codex 可共享同一目录——lamarck 观察的基因在各 harness 里就是同一批文件。

你的 harness 不在列表里? 设计好的流程是"agent 来写,lamarck 来验" ——这是新 harness 的首次配置动作,一次做完长期生效:契约文档就是接口 说明,node scripts/verify-adapter.js <manifest> 就是确认实现的 testcase 套件(schema、off 开关、自排除、阈值行为、协议完整性全覆盖)。契约的 Self-service 段附了可直接粘给那个 agent 的 prompt,并规定三次尝试预算: 第三次验证仍红,就降级到随包的通用兜底适配器 ——字段宽容提取,输出信封用 --emit= 参数选,不用写代码。含 generic 在内的 全部命令型适配器过的都是同一套验证器。

证据

诚实政策:不做自评分数(优化器用自家评委给自家产出打分证明不了任何事; darwin 自己引用的 SkillLens 论文说 LLM 自评准确率约 46%)。取而代之的分层:

  1. 机制自证 —— node scripts/selftest.js,隔离临时沙箱,零接触真实 遥测。当前 232/232:hook 记账、基因戳、三档触发、配置回退、会话隔离、 防死循环、字节级可复现输出、gitignore 边界,以及轻循环所依赖的协议条款 活性(rubric 接线、replay 收割、积压提示)。CI 可用(exit code 门控)。
  2. 生产遥测(按设计自动积累):每次调用带目标 skill 基因哈希,每笔被 接受的编辑都有前后窗口。这个 loop 天然 LLM 密集(评估 → 诊断 → 变异 → 评委),所以窗口先用两条 LLM 扭不动的通道度量:代码从 transcript 数出来 的客观信号——工具调用数、工具报错、非零退出码、重试、用户轮次——以 JSON 注入、模型只许原样抄;以及用户纠正率,纠正判定必须附用户原句。 评委(成对盲评,难判升 3 评委多数)只在客观通道不反对时才有投票权:编辑 后客观信号劣化,一票否决 "better" 并出回滚提案。全部 verify 结论落账; /lamarck report 硬数字在前。
  3. mutation-bench(bench/ 在 GitHub, 协议先预注册再执行):已知真值的受控劣化 + 盲评 A/B。run-001:已知劣化 变体拦截 4/5,已知改善变体误拦 0/2(单评委、三案多数;漏网的那个有公开 分析,不藏)。原始 verdict 逐字入库。
  4. 自应用 —— lamarck 按自己的规则进化:对自身的每次改动都有触发证据、 有界 diff、用户批准与验证结果。CHANGELOG.md 就是可审计的 历史,含四个在其记录的 review 纪律下抓出并修复的缺陷。不打分,留痕。
  5. 真实案例 —— 从生产使用中积累,发布前公开,观察性局限(任务分布 漂移)如实声明。

安装

一条命令——拷贝 skill、初始化本地配置、把参考适配器(Claude Code)接进 ~/.claude/settings.json(先备份、只增不删、幂等),装完自动跑 selftest 自证:

npx lamarck-skill

(等价:npx github:newdee/lamarck-skill)。装完重启 Claude Code(或开一次 /hooks)让 hook 加载。升级用同一条命令,而且是合并不是覆盖:lamarck 会 进化自己,你装的 SKILL.md 与协议可以合法地和发布版不同。installer 在 .upstream/ 留一份上次装入的原样副本,升级时逐文件三方合并 base / 本地 / 新版。 合得干净直接落地;冲突块上游赢,你的版本存到 data/upgrade-conflicts/<版本>/, inbox 留一行。只要你的基因进化过,机械合并就不是终点:installer 把上游自述的 变更(新增的 CHANGELOG 条目)作为一个后台 upgrade job 交给本地 lamarck,由它做 语义融合——审合并结果是否自洽、仍成立的本地意图经优化门重套、被上游覆盖的 丢掉——结果写 inbox。代码(scripts/、adapters/)永远跟上游。其他 harness 手动接线,步骤见各适配器 README: Codex、Cursor、 pi。卸载(摘 hook、保留文件与遥测): npx lamarck-skill uninstall。

手动安装步骤见英文版 README 折叠段。停用开关:在 skill 目录创建名为 off 的文件(静默两个 hook;手动 /lamarck 属显式意图,不受 影响)。

配置与使用

日常使用零操作:适配器静默观察,回合末自动评估,只有证据要求你决策 (三选一提示)或积压值得清算时才会打扰你。要配的只有两处。

config.json(在 skill 目录;本地文件永不入库,装机时从 config.example.json 生成):

| 键 | 默认 | 含义 | |---|---|---| | mode | threshold | 轻循环时机:every 每回合 / manual 仅手动 / threshold 攒够 N 条 | | threshold | 5 | threshold 模式的批量 N | | cadence | weekly | "更新"多久一批——升级出提案、后台施工、积压提醒合并进每个周期一个窗口(weekly / daily / continuous)。记账与静默评估照常连续;/lamarck 随时开窗 | | isolation | background | 评估在哪跑:background Stop hook 只入队一个 job,你的会话什么都看不到,无头 CLI(claude -p / codex exec / pi -p)在会话外跑整个循环,只在需要你时通知(没有无头 CLI 自动退回 inline);subagent 在本会话派一个子代理,主上下文只收一行;inline 在本回合上下文里跑(不多一次模型调用,但协议会进上下文) | | evolution.default | observe | 未列名 skill 的信任级:只攒证据,不动文件 | | evolution.evolve / suggest / auto | ["lamarck"] / [] / [] | 分级名单——evolve 每笔编辑问你,suggest 只写提案,auto 是挣来的自治(replay 把关) | | stability.streak / sample | 10 / 5 | 连续干净几次进 stable;stable 后抽查率 |

手动命令——在 Claude Code 里 /lamarck 加:

| 命令 | 作用 | |---|---| | (无参数) | 接线自检,然后清算全部 pending(本会话 + 积压) | | stats | 调用频次、纠正率、gap 排行——数字来自 scripts/report.js --brief,模型只叙述 | | report [skill] | 基于 scripts/report.js 的进化叙事:各版本客观信号均值与 delta(劣化自动标出)、纠正率、保留/回滚的编辑、replay 通过率 | | audit <skill> | 单 skill 全证据审查,可能产出编辑提案(仍过门) | | mode every\|manual\|threshold [N] | 切换评估时机 | | cadence weekly\|daily\|continuous | 切换更新批处理节奏 | | evolve list / add <skill> [级别] / remove <skill> | 管理信任阶梯 |

一切在后台——默认评估与施工都不碰你的会话。Stop hook 入队一个 evaluate job 立即返回;你批准一个提案(或 auto 级 skill 过门)同样只入队。 独立 worker 把每个 job 交给你 harness 的无头 CLI(claude -p / codex exec / pi -p,模板在 config.json background.runners,最小权限:只开 lamarck 目录 与 skills 目录),无头 agent 跑协议或按门规则施工、replay、落 verify 账、往 data/inbox.md 写一行。只有需要你时(出了提案、结晶了纠正、失败)才发系统 通知;下次 /lamarck 呈现未读结果。PATH 上没有无头 CLI:worker 留下 data/.no-runner,一天内评估退回会话内;background.runner: none 则永久退回 并恢复会话内施工。代价:每次触发一次无头运行(每会话每 threshold 次调用 一次),只读每次激活附近的 transcript 切片;真实会话实测:1 条 145 秒,2 条 329 秒。无头 agent 只经 scripts/store.js 写文件(Claude Code 在无头模式下 拒绝自己的文件编辑工具碰 ~/.claude),目录围栏与 3 处 × 10 行的编辑上限由 代码执法。

上下文卫生——没有任何 API 能从活会话里删东西,所以防线全在"不让进": 后台隔离(默认,零注入)、阈值批量触发、协议 3.6k 字预算、QUIETLY 条款 (会话内评估可见叙述 ≤2 行)、stable skill 降为一眼扫描、isolation: subagent 作中间档、每次注入带 ephemeral 标记让 harness compaction 优先丢弃。

不开 agent 看进展——证据报告是纯脚本;模型从不算数字,只叙述:

node scripts/report.js --since 30d          # markdown,逐 skill 逐版本
node scripts/report.js --since 90d --json   # 存档作证据

每个数字都能从账本逐行复核;唯一的时钟是账本自己的最新时间戳,同样的数据 永远产出同样的字节。

其他 harness 经各自适配器跑同一循环(接一次线即可,见上文架构表); 它们的评估落进同一本账,Claude Code 里的 /lamarck 全都读得到。

装完第一周会发生什么

一开始什么动静都没有——这是设计。hook 静默记录每次 skill 调用;一个会话攒够 5 条(默认阈值),回合末评估把 verdict 写进账本。几天过去,各 skill 的证据慢慢 攒;某个 skill 第一次出现两次同类 gap 时,你会收到三选一提示:采纳编辑、留作 提案、或否决。干净的 skill 会收敛降为抽查。冷启动是真实存在的:第一周没有任何 提案,通常说明你的 skill 都挺健康,不是 lamarck 没干活——看一眼 data/ledger.jsonl 就知道它在记。

常见问题

  • 怎么确认 hook 活着? 随便用一个 skill,看 data/pending.jsonl 是否多了 一行。意外错误会落在 data/hook-errors.log(那里安静 = 健康)。
  • 评估时机我能控制吗? 能:/lamarck mode every / manual / threshold N 三档随切,/lamarck 随时手动跑。
  • 哪些 skill 会被改? 只有白名单里的(/lamarck evolve add <skill>)。 默认全是 observe:只攒证据,不动文件。插件永远不会被直接编辑。
  • 能不能不每次都问我? 能——把久经考验的 skill 升到 auto (/lamarck evolve add <skill> auto):过门编辑不问直接落地,replay 把关, 事后报告,一步 git revert 可撤。lamarck 自己永远不跑 auto。
  • 什么时候需要手动跑 /lamarck? 清算其他会话攒下的积压(积压到够清算时 轻循环会主动提醒)、audit <skill> 做全量证据审查、stats 看记分板、 report 看进化叙事。
  • 怎么暂停? 在 skill 目录建一个名为 off 的文件(hook 静默;手动调用 不受影响)。卸载:npx lamarck-skill uninstall。
  • 为什么一直没有优化建议? 证据门:每个 skill 要攒出 ≥2 次独立同类 gap 才会出提案。健康的 skill 永远不会触发——这是特性。

环境要求

Node.js 18+ 与 git,任意平台(Windows / macOS / Linux),外加至少一个受支持 的 harness:Claude Code(installer 自动接线)、Codex >= 0.142、Cursor、pi (按各自适配器 README 接线)。

相邻工作

最近的邻居是 self-improving-skills ——它也用 PostToolUse hook、也会改 SKILL.md。逐行分界(附 task-observer 作参照):

| | lamarck | self-improving-skills | task-observer | |---|---|---|---| | 触发 | 被评估的结果:gap 分类、用户纠正作 ground truth | 活动量:距上次蒸馏 N 次工具调用/文件改动 | 手动会话复盘 | | 覆盖面 | 全部已装 skill,被动观察(插件上限 suggest);逐 skill auto/evolve/suggest/observe 分级 | 以它自己蒸馏出的 skill 为主 | 你手动复盘到哪算哪 | | 治理 | 证据门(≥2 次独立同类 gap)+ 每笔编辑用户批准,或逐 skill 挣得的 auto(replay 把关落地) | 后台自动改,写完才校验 | 只出建议,不动手 | | 验证 | 语义级:真实痕迹 replay 新旧对照、成对盲评、版本分窗健康度 | 语法级:SKILL.md 写坏才回滚 | 无 | | 修剪 | 引用型提案(条目 90 天零引用) | 时间型归档(30/90 天没用) | 无 | | 效果证明 | 预注册基准、跨平台 CI 自测、留痕的自应用 | — | — |

一句话:它问"用得多了,该总结了";lamarck 问"表现如何、证据够不够、改完 真的变好没有"。skill 收割类(self-learning-skills、autoskill)是从会话造 新 skill,不是进化既有 skill。

路线图

两条正交轴,都由适配器契约定形:

  • 基因轴——抽象不限于 skill:任何驾驭 agent、且在生产中被反复使用的 文本工件,都能在同一套 遥测 → 账本 → 尺子 → 门控编辑 架构下进化。计划 目标依次:subagent 定义(.claude/agents/)、CLAUDE.md / AGENTS.md 记忆文件、slash command、MCP 工具配置。
  • harness 轴——Claude Code、Codex、Cursor、pi 四家适配器已随包 (见架构章);下一步是真实会话验证加固,再按契约扩新 harness。Agent Skills 规范的跨工具采纳意味着同一份 SKILL.md 基因会在多个 harness 反复 出现——共享账本跨 harness 度量同一个 skill。

Iron Rules 全线通用:证据门、用户在环、回滚、白名单。

状态

已发布:lamarck-skill 上架 npm 与 GitHub。设计日志见 CHANGELOG.md。生产真实案例(证据第 5 层)正随使用积累,完成后在此发布。