ljg-push

把 ~/.agents/skills/ljg-* 里所有更新过的 skills 同步到 github repo (ljg-skills),先推 master 分支(org-mode 输出风格),再切 md 分支(markdown 输出风格)做基础 markdown 化后推。Use when user says '/ljg-push', 'push skills', '推送 skills', '同步 skills', 'sync ljg', or whenever ljg-* skills get updated and need shipping. NOT FOR pushing non-lj

By lijigang · 4,516 installs

npx skills add lijigang/ljg-skills --skill ljg-push

Source repository · Upstream listing

ljg push: 推送 ljg skills 把本地 ~/.agents/skills/ljg 里改过的 skills,一键同步到 github repo,覆盖 master 和 md 两个分支。 仓库路径(硬编码) 如果 $SKILLS REPO 不存在,脚本会自动 clone。如果它存在但不是 ljg skills 的 git repo,脚本会报错退出(不破坏现有目录)。 两条分支的差异 分支 输出格式 文件扩展 加粗 文件头 master (默认) org mode .org bold +title: 等 md markdown .md bold YAML frontmatter ~/.agents/skills/ 里的 skill 是 master 风格 (源版本)。md 分支的差异由脚本自动转换 + 必要时手工补。 脚本推完 md 后会自动切回 master 。本地 $HOME/code/ljg skills 应该始终停在源分支,方便下次查看和安装。 工作流 按 Workflows/Push.md 步骤执行 → 调用 Tools/Push.sh 。 README 一致性(硬 gate) 每次 push 前,脚本强制做一件事: 把 README 跟 local skills 对一遍 。 列出 ~/.agents/skills/ljg 全部 skill 名 grep $SKILLS REPO/README.md 里出现的 ljg xxx 找出 local 有但 README 没有的—— 几乎肯定意味着 README 漏更新 命中 → push 中止,报告差异 每次 push 都是检视 README 的机会。问自己: 1. 新增 skill 了吗 ?README 的 skill 清单 / 安装命令需要加一行 2. 删了 skill 吗 ?README 对应行要删 3. 某个 skill 的描述大改了吗 ?README 的简介可能要同步 确认 README 已审、确实不需要更新时,绕过 gate: 自动转换的范围 md 分支同步时自动转换(2026 06 12 起含 org 文件本体): Org 文件中的 +begin example / +end example 图块转为 text 围栏,保留块内文字,不将其中的星号或井号误当标题和注释。标记兼容大小写。 org 文件本体 :skill 内每个 .org 文件(assets/ 除外)转成同名 .md 并删除原件——org 头块→YAML frontmatter(含 围栏, filetags → tags )、 标题→ 标题(层级保留)、 +ATTR 行删除、 [[file:x]] → ![](x) 、 +begin src → org 模板,以及首行就是 +key: 的无语言围栏模板,都会转为 bash curl s X POST http://localhost:31337/notify \ H "Content Type: application/json" \ d '{"message": "Running Push in ljg push"}' \ /dev/null 2 &1 & User: /ljg push → 检测 ~/.agents/skills/ljg 中跟 repo 有差异的 skills → master: rsync + bump version + commit + push → md: rsync + mdize + bump version + commit + push → 切回 master → 报告:哪些 skills 推了,新版本号,剩余手工差异 User: /ljg push dry run → 列出会被同步的 skills → 列出会做的 markdown 化转换 → 不执行 rsync / commit / push org 或无语言围栏里的 +title 、星号标题与 Org 链接必须作为一个语义单元转换;转换器会生成带 的 YAML、Markdown 标题与链接,同时保留原文件的纯 CRLF/LF 换行风格,避免无意义的全文件 diff 输出格式残留不能只扫动词短语 ——「写 Org 文件时」转掉后,同段的「所有生成的 Org 文件」仍可能留下,令 md 分支继续要求生成 Org。转换器和提交前审计都要覆盖这种保存路径句式;否则一次成功 push 会把旧格式契约重新带回远端 输出契约不只在 Markdown 文档里 —— evals/ .json 的 prompt / expected output 会直接要求技能生成某种格式,运行时代码里的 stdin .org 还会选择默认解析器。mdize 与提交前审计必须覆盖这两类消费者,同时保留显式 Org 输入兼容测试 互斥格式句不能只替换格式名 ——一句同时声明「必须使用源格式」和「禁止目标格式」时,逐词替换会让肯定项与禁止项重合。mdize 必须整句交换目标与排除项,残留审计也必须拒绝两端相同的句子 格式名变了不等于语法规则也变了 —— org mode 被替换为 markdown 后,单星号加粗、 ~code~ 与「不用反引号」仍会命令模型输出 Org。转换器必须把这组互斥规则整体改成 Markdown 规则,审计也要把旧规则视为阻断 脚本会自动 bump patch version 在 plugin.json + marketplace.json ——如果你想 bump minor / major,先手动改完再跑脚本,脚本只追加 patch 如果 md 分支的远端比本地新(继刚另一台机器推过) ,脚本会 pull rebase 失败时尝试一次 reset hard origin/md 重新应用——这会丢弃本地未推的 md 分支 commit。脚本前会提示 当前路径 :skill 源固定在 ~/.agents/skills/ ,工作 repo 固定在 ~/code/ljg skills/ ;不要从历史备份目录读取或推送