Agent skill

Ljg Push

by lijigang in lijigang/ljg-skills

把 ~/.agents/skills/ljg- 里所有更新过的 skills 同步到 github repo (ljg-skills),先推 master 分支(org-mode 输出风格),再切 md 分支(markdown 输出风格)做基础 markdown 化后推。Use when user says '/ljg-push', 'push skills', '推送 skills'…

MITAuto-check passedDevelopment

Install Ljg Push

skills CLI
$ npx skills add lijigang/ljg-skills --skill ljg-push -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lijigang/ljg-skills ljg-push --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ljg-push .claude/skills/ljg-push && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ljg-push
GitHub stars
7.5k
Token cost
~1.4k tokens
SKILL.md length
413 words
Files
6
Skills in repo
26
Repo updated
First seen
Licence
MIT

At a glance

把 ~/.agents/skills/ljg- 里所有更新过的 skills 同步到 github repo (ljg-skills),先推 master 分支(org-mode 输出风格),再切 md 分支(markdown 输出风格)做基础 markdown 化后推。Use when user says '/ljg-push', 'push skills', '推送 skills'…

  • Works in 3 steps: *新增 skill 了吗*?README 的 skill 清单 /… → *删了 skill 吗*?README 对应行要删 → *某个 skill 的描述大改了吗*?README 的简介可能要同步
  • User says /ljg-push
  • SKILL.md covers 仓库路径(硬编码), 两条分支的差异, 工作流 and README 一致性(硬 gate), plus 4 more sections
  • Runs TypeScript and Shell scripts from its folder; calls curl

What it does

Ljg Push is an agent skill from lijigang/ljg-skills. 把 ~/.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-ljg skills or arbitrary git repos.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files (for example `Tools/MdizeEmbeddedOrg.test.ts`, `Tools/MdizeEmbeddedOrg.ts` and `Tools/Push.sh`).

It sits in Development, covering Markdown. It works with Git and GitHub. The licence is MIT.

When your agent uses it

  • User says /ljg-push
  • Whenever ljg- skills get updated and need shipping

Example prompts

  • “/ljg-push”
  • “push skills”
  • “推送 skills”
  • “/ljg-push”

Requirements

  • Node.js
  • A Bash shell

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. *新增 skill 了吗*?README 的 skill 清单 / 安装命令需要加一行
  2. *删了 skill 吗*?README 对应行要删
  3. *某个 skill 的描述大改了吗*?README 的简介可能要同步

What it can do on your machine

Read from SKILL.md and the folder at commit 9e75497. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ljg Push loads about 1.4k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 413 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from lijigang/ljg-skills at commit 9e75497, republished under its MIT licence (© lijigang). 413 words, ~1,431 tokens.

Download SKILL.mdSave it as .claude/skills/ljg-push/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
ljg-push
description
把 ~/.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-ljg skills or arbitrary git repos.
user_invocable
true

ljg-push: 推送 ljg-* skills

把本地 ~/.agents/skills/ljg-* 里改过的 skills,一键同步到 github repo,覆盖 master 和 md 两个分支。

仓库路径(硬编码)

SKILLS_REPO="$HOME/code/ljg-skills"     # 本地工作 repo
SKILLS_LOCAL="$HOME/.agents/skills"      # 本地 skill 源
REPO_URL="git@github.com:lijigang/ljg-skills.git"

如果 $SKILLS_REPO 不存在,脚本会自动 clone。如果它存在但不是 ljg-skills 的 git repo,脚本会报错退出(不破坏现有目录)。

两条分支的差异

分支输出格式文件扩展加粗文件头
master(默认)org-mode.org*bold*#+title: 等
mdmarkdown.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:

bash
/ljg-push --skip-readme-check

自动转换的范围

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→``` 围栏。Markdown 与运行时文本文件(如 .ts / .js / .json / .sh)里对实际被改名文件的引用同步改写
  • Markdown 内嵌的完整 Org 示例:```org 模板,以及首行就是 #+key: 的无语言围栏模板,都会转为 ```markdown;连续头块变为带 --- 的 YAML frontmatter,标题、链接、强调、等宽文本与分隔线随模板一起转换;原文件使用纯 CRLF 时保留其换行风格
  • 文件扩展引用:__qa.org → __qa.md、__paper.org → __paper.md 等(denote 命名约定)
  • 关键词:org-mode → markdown、Org-mode → Markdown
  • org 式格式指令:加粗用 *bold*(单星号)… → 加粗用 **bold**(双星号)、标题层级从 * 开始 → 从 # 开始、Org 文件头 → Markdown 文件头、行首 #+title: 等 8 个示例键 → YAML 键行
  • 结构化强调标签:行首 - *标签*: → - **标签**:;紧邻这类标签的 org 围栏同步改为 markdown
  • 输出契约与运行时默认值:evals/*.json 中明确要求保存 Org 的提示与期望改为 Markdown;stdin__*.org 默认值改为 .md,同时保留显式 Org 输入与测试夹具
  • ljg-is 的生成合同:输出标题、默认文件扩展、路径称谓、元数据名、tags 与双格式验收句统一切到 Markdown/YAML + Denote,并删除 Org 专用 lint 阻断表述;提交前残留审计拒绝任何未转换的 Org 输出指令

检测与同步共用同一文件边界:按校验和比较内容,可靠识别文件新增、删除、内容和可执行位变化;纯时间戳、目录元数据、空目录不会单独触发发布,任意层级的 .git/、node_modules/、.DS_Store 不进入同步。忽略清单只含这三类明确杂物,.bak、.backup 等真实备份仍会触发同步和发布审查。

仍不自动转换(按需手工):

  • 正文里的 *bold* 标记:markdown 里 *x* 是斜体,盲替会破坏文档自身格式;只有「行首 bullet + 全角冒号」标签会安全转换

Voice Notification

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 &

输出文本:Running **Push** in **ljg-push**...

Examples

Example 1: 一键推送

User: /ljg-push
→ 检测 ~/.agents/skills/ljg-* 中跟 repo 有差异的 skills
→ master: rsync + bump version + commit + push
→ md: rsync + mdize + bump version + commit + push
→ 切回 master
→ 报告:哪些 skills 推了,新版本号,剩余手工差异

Example 2: 看会推什么但不真推

User: /ljg-push --dry-run
→ 列出会被同步的 skills
→ 列出会做的 markdown 化转换
→ 不执行 rsync / commit / push
Show full SKILL.md (170 more words)Show less

Gotchas

  • README 漂移是最容易被忽略的——加完新 skill 直接推,README 还停在老清单。脚本现在有硬 gate 拦这一刀;拦下来时不要无脑加 --skip-readme-check,先去看一下 README
  • 脚本前提是 git credentials 已配好(ssh key 或 PAT)—— ljg-push 不处理认证,认证失败时直接报错
  • master 必须先推——md 分支的 markdown 化基于 master 的 org 版本做转换。反过来推会破坏顺序
  • untracked 杂物(如 assets/measure.js)会被 rsync 同步到 repo——如果不想推,先在本地删掉,或加进 .gitignore
  • 同步忽略项必须窄而一致——.git/、node_modules/、.DS_Store 不进入同步;纯时间戳、目录元数据和空目录不会单独触发发布,也不会进入 Git 结果。普通备份文件不在忽略清单里,仍会被检测出来,避免把可能公开的真实内容藏掉
  • org 文件本体已自动转换(2026-06-12 起)——template.org 等会被转成 .md 并删除原件,每次推送重新生成(rsync --delete 冲掉也无妨,幂等)。遗留手工项只剩正文里的 *bold* 标记。新增带复杂构件的 org reference 文件后,先 --dry-run 或沙盒跑一遍 mdize 看转换效果
  • 重命名引用可能藏在运行时代码里——例如测试用 new URL("../Template.org", import.meta.url) 读取模板;只改 Markdown 文档会让 md 分支缺文件。转换器会按本次实际转出的 basename 精确改写 .ts / .js / .json / .sh 等文本消费者,同时保留没有对应实体文件的 Org 测试夹具字符串
  • 结构化标签不能靠枚举示例词——x、f(x) 之外还会出现「主体/边界」「代入」等真实标签;转换器按 - *标签*: 的结构识别,发布后仍要扫描 md 文件是否残留单星标签
  • Markdown 转换不能只匹配小写 org——技能正文常写 Org、内联 #+description,Org 模板的 # 注释 在 Markdown 里还会变成标题;转换器统一处理这些形式,并在 md commit 前扫描输出指令、Org 标记和残留 .org 文件
  • 整份文档模板不能只改围栏标签——```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/;不要从历史备份目录读取或推送

© lijigang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files in skills/ljg-push of lijigang/ljg-skills.

  • SKILL.md
  • Tools/MdizeEmbeddedOrg.test.ts
  • Tools/MdizeEmbeddedOrg.ts
  • Tools/Push.sh
  • Tools/Push.test.ts
  • Workflows/Push.md

Open the folder on GitHubat commit 9e75497

Compare with similar skills

Ljg Push next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ljg Push compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ljg Push this skilllijigang/ljg-skills7.5k—~1.4kAutomated safety check: PassMIT
DB AI GitHub Paper Weekly Newsdigoal/blog8.6k—~1.2kAutomated safety check: PassGPL-2.0
Cut Releasespiculedata/saiku1.3k—~502Automated safety check: PassApache-2.0
Lint Repository Markdowncodsen/codsen214—~832Automated safety check: PassMIT
Markdown Without Hard Wrapsprisma/orm48k—~472Automated safety check: PassApache-2.0
Open Source Project Articledigoal/blog8.6k—~1.3kAutomated safety check: PassGPL-2.0

Similar skills

  • 抓取并汇总"数据库、AI、GitHub、AI 论文"近 1 周新闻,输出图文并茂(含 mermaid 图)的 markdown 周报到当前项目的 markdown/ 目录。覆盖 10 个数据源:postgresweekly.com/issues(自动解析最新 issue…

    8.6k GitHub stars~1.2k tokensUpdated today
    DatabasesAuto-check passed
  • Cut Release

    spiculedata/saiku

    Cut a Saiku release via Gitflow — version bump, release branch, PR to main, tag, back-merge, and post-release chores.

    1.3k GitHub stars~502 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Keep the repository's linted Markdown passing npm run lint:markdown.

    214 GitHub stars~832 tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Official

    Keeps Markdown prose on one line per paragraph instead of wrapping at a fixed column, so renderers can reflow it and diffs stay clean.

    48k GitHub stars~472 tokensUpdated today
    DevelopmentAuto-check passed
  • Analyze an open-source project from a repository URL and write a deeply sourced Chinese Markdown article.

    8.6k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • 解读用户粘贴的 GitHub 每周 Trending 或开源项目榜单内容,基于用户提供的候选项目、项目 README、GitHub 项目页和 DeepWiki 生成适合公众号发布的 Markdown 文章,并输出到当前项目 markdown 目录。用于 GitHub 周榜解读、每周开源热点、热门开源项目分析、公众号开源项目推荐。

    8.6k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed

More from lijigang/ljg-skills

All 26 skills in this repo
  • Whole-Book Explainer Notes

    lijigang/ljg-skills

    Explains a whole book to someone who has not read it, keeping its specific content and showing how its threads connect, and saves the result as an Org note.

    7.5k GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Ljg Paper

    lijigang/ljg-skills

    Explain research papers to readers without a specialist background: what the paper studies, what the authors contribute, how the findings follow, and what the evidence does not establish.

    7.5k GitHub stars~798 tokensUpdated yesterday
    Auto-check passed
  • Text to PNG Card Caster

    lijigang/ljg-skills

    Turns text, URLs or local files into tall PNG cards through HTML typography, with four modes: long reading card, full-text layout, comic and whiteboard.

    7.5k GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Turns a named classical Chinese chapter, such as one from the Tao Te Ching or the Analects, into a single annotated PNG image with notes and commentary.

    7.5k GitHub stars~551 tokensUpdated yesterday
    Auto-check passed
  • Constraint Engine

    lijigang/ljg-skills

    Finds the handful of constraints that truly define a domain, role, product or debate, grades each by hardness, and explains the behavior those constraints produce.

    7.5k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Offline HTML Talk Decks

    lijigang/ljg-skills

    Builds single-file offline HTML talk decks from Org or Markdown outlines, with faithful layout or editorial condensing and keyboard navigation.

    7.5k GitHub stars~506 tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Ljg Push

What does Ljg Push do?

把 ~/.agents/skills/ljg- 里所有更新过的 skills 同步到 github repo (ljg-skills),先推 master 分支(org-mode 输出风格),再切 md 分支(markdown 输出风格)做基础 markdown 化后推。Use when user says '/ljg-push', 'push skills', '推送 skills'…. Ljg Push is an agent skill from lijigang/ljg-skills.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.

When should I use Ljg Push?

Ljg Push fits situations like: user says /ljg-push; whenever ljg- skills get updated and need shipping.

How do I install Ljg Push in Claude Code?

Run `npx skills add lijigang/ljg-skills --skill ljg-push -a claude-code`. Or copy the skill folder (skills/ljg-push in lijigang/ljg-skills) into .claude/skills/ljg-push in your project. Claude Code loads it when a task matches its description.

How do I install Ljg Push in Codex?

Run `npx skills add lijigang/ljg-skills --skill ljg-push -a codex`. Or copy the skill folder (skills/ljg-push in lijigang/ljg-skills) into .agents/skills/ljg-push in your project. Codex loads it when a task matches its description.

Can I use Ljg Push in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lijigang/ljg-skills --skill ljg-push -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ljg-push, .gemini/skills/ljg-push, .github/skills/ljg-push and .opencode/skills/ljg-push in your project.

What does Ljg Push need to run?

Going by SKILL.md and its folder, Ljg Push needs TypeScript and a shell for the scripts in its folder and the command-line tools its instructions call (curl). Our summary lists: Node.js; A Bash shell.

Does Ljg Push access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Ljg Push safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ljg Push use?

Ljg Push is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ljg Push use?

About 1.4k tokens (SKILL.md is roughly 5.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ljg Push?

Skills that share tags, products or a category with Ljg Push: DB AI GitHub Paper Weekly News (digoal/blog, 8.6k stars), Cut Release (spiculedata/saiku, 1.3k stars), Lint Repository Markdown (codsen/codsen, 214 stars) and Markdown Without Hard Wraps (prisma/orm, 48k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ljg Push?

lijigang (a GitHub user) maintains it in lijigang/ljg-skills, which has 7,474 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 8, 2026.

Source: lijigang/ljg-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.