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

@petercjl/procli

v0.7.0

Published

Agent-first CLI and portable Skill for SealSeek project management

Readme

procli

procli 是自建项目管理系统面向人和 Agent 的稳定 CLI。npm 包同时分发唯一真源的 project-management Skill;Codex 和 SealSeek 使用同一台机器上的同一个 CLI。

npm install -g @petercjl/procli@latest
procli profile add nas --url http://NAS地址:14317 --environment production
procli auth login --profile nas
procli skill install --agent codex
procli skill install --agent sealseek

CLI 与 Skill 真源都位于全局 npm 包中。Codex 的发现目录使用指向包内 Skill 的链接;SealSeek 的活动工作区需要实体副本,skill install --agent sealseek 会复制并登记到工作区和技能池。升级 npm 包后运行 procli skill update --agent codex 和 procli skill update --agent sealseek,再新建 Agent 对话以刷新技能清单。非默认 SealSeek 工作区可设置 SEALSEEK_WORKSPACE 或传入 --target-dir 指向 workspaces/<工作区>/skills。

默认 Profile 是 nas。开发时可持久切换到本地,或只覆盖一条命令:

procli profile add local --url http://127.0.0.1:4317 --environment development
procli profile use local
procli --profile nas project create --name "NAS 测试项目" --goal "验证最终服务" --yes

创建生产项目支持目标确认、幂等和写后回读:

procli project create --name "新品项目" --goal "完成市场验证与上市" --yes

只读命令可直接查询目录、项目和任务记录:

procli directory list
procli task list --project "新品项目"
procli task get --project "新品项目" --task "完成市场与竞品调研"

task get 返回节点当前状态、状态历史、依赖、活动记录、Agent 运行、交付物、Wiki 元数据和通知。

项目知识采用关系元数据、钉钉原文、不可变 Markdown 来源快照、报告证据页,以及按节点持续编译的 current.md。项目 index.md 和 queries/index.md 优先路由到当前知识;节点目录保存各期来源和历史记录,用于核对差异与证据。Agent 读取已有综合页及全部活跃来源,按知识点更新结论、标明证据时间窗与尚未解决的分歧,再经 procli knowledge compile 保存;服务端归档上一版并记入 wiki/log.md。钉钉文档由具备权限的官方 dws 创建并回读;knowledge source-check 可按需核验原文是否更新。

procli knowledge context --project "新品项目" --task "完成市场与竞品调研" --json
procli knowledge index --project "新品项目" --node "市场调研" --json
procli knowledge reindex --project "新品项目" --context-token "<knowledge index 返回的令牌>" --dry-run --json
procli knowledge ingest --project "新品项目" --task "完成市场与竞品调研" \
  --title "市场调研报告" --source-node "<钉钉 nodeId>" \
  --source-url "https://alidocs.dingtalk.com/i/nodes/<nodeId>" \
  --source-version "<真实来源版本或读回时间>" --workspace "<知识库 workspaceId>" \
  --file ./verified-source.md --wiki-file ./knowledge-summary.md \
  --analysis-date "2026-09-16" --platform "跨平台公开资料" --topics "容量,保冷,竞品" \
  --context-token "<当前令牌>" \
  --idempotency-key "<UUID>" --dry-run --json
procli knowledge query --project "新品项目" --node "市场调研" --json
procli knowledge compile-context --project "新品项目" --node "市场调研" --json
procli knowledge compile --project "新品项目" --node "市场调研" \
  --file ./market-current.md --source-ids "<来源知识ID1,来源知识ID2>" \
  --change-summary "叠加两期调研,记录一致结论与待核查差异" \
  --context-token "<编译上下文令牌>" --current-version 1 \
  --idempotency-key "<UUID>" --dry-run --json
procli knowledge query --project "新品项目" --node "市场调研" \
  --reports --platform "跨平台公开资料" --topic "保冷" --from "2026-01-01" --json
procli knowledge source-context --project "新品项目" --knowledge-id "<知识ID>" --json
procli knowledge source-check --project "新品项目" --knowledge-id "<知识ID>" \
  --context-token "<来源上下文令牌>" --dry-run --json

预演核对后移除 --dry-run 写入;生产 Profile 还需要 --yes。返回的 knowledgeId、来源快照和编译页均会回读验证。来源检查通过 dws 读取完整正文并比较 SHA-256;发现变化后将节点当前知识标记为待重新编译。任务或节点删除会归档项目侧知识关系与本地快照,原始钉钉文档保留不动,恢复时重建项目侧关系。

任务编辑和 Agent 执行采用项目级写前令牌。每次写入后都要重新获取上下文,因为项目版本会变化:

procli task update-context --project "新品项目" --task "完成市场与竞品调研" --json
procli task update --project "新品项目" --task "完成市场与竞品调研" \
  --progress 45 --context-token "<令牌>" --task-version 3 --dry-run --json
procli run start --project "新品项目" --task "完成市场与竞品调研" \
  --skill "市场调研" --context-token "<新令牌>" --task-version 4 --dry-run --json
procli artifact upload --project "新品项目" --task "完成市场与竞品调研" \
  --file ./market-report.pdf --context-token "<新令牌>" --task-version 5 --dry-run --json
procli run finish-context --project "新品项目" --task "完成市场与竞品调研" --run-id "<运行ID>" --json
procli run finish --project "新品项目" --task "完成市场与竞品调研" \
  --run-id "<运行ID>" --run-version 1 --status completed \
  --output "完成市场判断与机会总结" --artifact-id "<附件ID>" \
  --context-token "<新令牌>" --task-version 6 --dry-run --json
procli task submit --project "新品项目" --task "完成市场与竞品调研" \
  --context-token "<新令牌>" --task-version 7 --dry-run --json

提交、审核通过和驳回会进入通知队列。管理员绑定成员的精确钉钉 userId 后,可在配置好官方 dws 与应用机器人 Code 的运行环境启动发送 worker:

procli notification list --json
procli notification bind --member market --dingtalk-user-id "<userId>" --yes
PROCLI_DINGTALK_ROBOT_CODE="<机器人Code>" procli notification dispatch --dry-run --json
PROCLI_DINGTALK_ROBOT_CODE="<机器人Code>" procli notification worker --identity bot --yes

worker 应由本地进程管理器持续运行;可用 PROCLI_DWS_PROFILE 固定同一企业身份。钉钉消息发送结果不确定时会进入人工核对状态。核实钉钉里确实未收到后,管理员可运行 procli notification requeue --id "<通知ID>" --confirm-not-delivered --yes 重新入队。

节点是看板中的阶段列。添加节点前先读取当前节点顺序,默认追加到末尾,也可以指定前后位置:

procli node create-context --project "新品项目" --json
procli node create --project "新品项目" --name "产品定价" \
  --after-node "市场调研" --context-token "<令牌>" \
  --idempotency-key "<UUID>" --dry-run --json

删除节点会把节点、其中的任务、Wiki、附件和执行记录作为一个批次放入回收站。其他节点存在下游依赖时默认阻止;detach 必须由用户明确选择。有实质产出的节点只能由管理员删除:

procli node delete-context --project "新品项目" --node "产品定价" --json
procli node delete --project "新品项目" --node "产品定价" \
  --confirm-node "产品定价" --dependency-policy block --dry-run --json
procli node restore --deletion-id "<deletionId>" \
  --confirm-node "产品定价" --dry-run --json

添加任务需要先读取精简写前快照。预演和真实写入使用同一个 contextToken 和幂等键;如果期间网页端或其他 Agent 修改了项目,写入会返回 PROJECT_STATE_CHANGED:

procli task create-context --project "新品项目" --json
procli task create --project "新品项目" --node "市场调研" \
  --title "整理亚马逊热销款价格带" \
  --description "统计前20款商品的价格、销量和主要卖点" \
  --context-token "<create-context 返回的令牌>" \
  --idempotency-key "<同一逻辑尝试的 UUID>" --dry-run --json

本地 Profile 确认预演后移除 --dry-run 即可写入;生产 Profile 还需要 --yes。新任务默认添加到节点末尾,可使用 --before-task、--after-task 指定位置,使用 --depends-on 显式指定依赖。

任务删除采用可恢复链路。CLI 会读取当前状态、计算影响哈希,并把任务 Wiki、历史版本和附件移动到按 deletionId 隔离的回收目录。存在下游依赖时默认阻止删除,只有明确选择 detach 或 rewire 才会继续:

procli task delete-context --project "新品项目" --task "完成市场与竞品调研" --json
procli task delete --project "新品项目" --task "完成市场与竞品调研" \
  --confirm-task "完成市场与竞品调研" --dependency-policy block --dry-run --json
procli task delete --project "新品项目" --task "完成市场与竞品调研" \
  --confirm-task "完成市场与竞品调研" --dependency-policy detach \
  --idempotency-key "<UUID>" --json

查看回收记录并恢复任务:

procli trash list --project "新品项目" --json
procli trash get --deletion-id "<deletionId>" --json
procli task restore --deletion-id "<deletionId>" \
  --confirm-task "完成市场与竞品调研" --dry-run --json

恢复写入时移除 --dry-run;生产 Profile 还需要 --yes。任务默认保留 90 天,当前版本不自动彻底清除。

商品项目默认生成标准生命周期 SOP。Agent 也可以提交自定义 SOP;每个节点都必须有名称和工作说明:

{
  "nodes": [{ "name": "验证需求", "description": "取得真实用户证据并形成结论" }]
}
procli project create --name "新品验证" --sop-file ./sop.json

删除项目仅允许系统管理员执行,必须先预览、精确复述项目名称并显式确认。删除是可恢复的软删除:

procli project delete --name "新品验证" --confirm-name "新品验证" --dry-run
procli project delete --name "新品验证" --confirm-name "新品验证" --yes

店铺项目和企业项目已保留为后续能力,目前 CLI 会返回 FEATURE_UNSUPPORTED。

配置和每个 Profile 的个人凭证保存在用户配置目录,不进入 npm 包或项目仓库。运行 procli doctor --json 查看当前 Profile、服务指纹和认证状态。

一次提交任务研究成果

procli task publish 接收一份 JSON 内容包,创建并回读钉钉文档,把可选 HTML 报告嵌入文档并上传为任务附件,写入报告专属 Wiki 知识、编译节点当前知识,最后更新任务卡摘要。步骤结果保存在用户配置目录的 publish/ 日志中;用同一幂等键和同一内容包续传。

{
  "schemaVersion": 1,
  "title": "示例品类研究",
  "summary": "市场数据支持继续深研;商品与利润条件待验证。",
  "contentMarkdown": "# 研究结论\n\n有依据的正文。",
  "htmlReport": "./示例报告.html",
  "analysisDate": "2026-09-26",
  "platform": "淘宝",
  "topics": ["示例品类", "类目机会"]
}

没有 HTML 时,contentMarkdown 默认同时用于钉钉正文和报告专属 Wiki;可分别提供 humanMarkdown、knowledgeMarkdown。提供 htmlReport 时,CLI 会把 HTML main 中的完整可见报告转为 Wiki Markdown,保留标题与全部数据表行,并将 knowledgeMarkdown 作为项目补充附在全文之后。写前检查转换覆盖,写后回读核对 Wiki 全文;HTML 仍作为给人看的附件。若节点已有知识来源,内容包还须提供融合旧来源的 currentMarkdown,其中以 [K:现有来源ID] 引用旧来源,以 [K:NEW] 引用本次新增来源。节点当前页会链接到 Wiki 全文,Agent 可以只读取 Wiki 获取细节。

procli task publish --profile local --project "示例项目" --task "确认商品目标与立项" \
  --bundle ./bundle.json --idempotency-key <UUID> --dry-run --json
procli task publish --profile local --project "示例项目" --task "确认商品目标与立项" \
  --bundle ./bundle.json --idempotency-key <同一UUID> --yes --json

正式执行会修改钉钉和项目服务,必须显式添加 --yes。多组织钉钉账号可用 --dws-profile CORP:USER 固定文档操作身份。--dry-run 只检查内容与计划,不创建文档,也不代替正式执行时逐步调用的服务端预览。

若 HTML 插入回执不确定,先按记录的文档 ID 核对正文媒体列表;确认真实的 blockId、文件名和类型后,使用相同幂等键加 --recover-html-block BLOCK_ID --yes 续传。CLI 会回读核对区块,不会再次插入附件。

修复旧提交中不完整的 Wiki 时,使用原内容包及原提交记录,先加 --repair-wiki --repair-journal <原记录路径> --dry-run 检查,再以 --yes 执行。此模式在原知识 ID 上回填完整报告并重新编译当前页,不新建钉钉文档或重复上传附件。