Guide · Agent skill
How to use the ljg-push agent skill: sync ljg-* skills to GitHub
Updated · written with AI from the project's own documentation and checked against our catalogue data
ljg-push is an agent skill, a folder of instructions and scripts that an AI agent such as Claude can load and run on request. It is built for the maintainer of the ljg-skills collection: it finds locally changed ljg-* skill folders, copies them into a local clone of the ljg-skills GitHub repository, and pushes them to the master branch in Org-mode style and then to an md branch in Markdown style. This guide explains what it does, how to install it, how to trigger it, and what to check before it publishes anything.
Quick start
- 1Download and unzip the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder.
- 2Check prerequisites. Confirm bash, git with working SSH access to github.com, rsync and Bun are installed, and that ~/code/ljg-skills and ~/.agents/skills exist.
- 3Review what would change. Ask the agent to run /ljg-push --dry-run and read the list of skills and conversions it reports.
- 4Run the push. Ask the agent to push the skills, for example by saying /ljg-push or sync ljg. The skill pushes master first, then md.
- 5Handle the README gate. If the push stops because a local skill is missing from the README, update the README first rather than bypassing the check.
- 6Verify on GitHub. Check both the master and md branches of lijigang/ljg-skills after the run, and confirm the local clone is back on master.
What the ljg-push skill makes the agent do
When you ask the agent to push skills, the skill takes the skills in ~/.agents/skills/ that start with ljg- and have been updated, and syncs them to the GitHub repo lijigang/ljg-skills. It works on two branches. The master branch receives the source files in Org-mode style. The md branch then receives Markdown-style versions, produced by an automatic conversion plus some manual fixes where needed.
Before any push, the skill checks the repo README against the local skills. If a local ljg-* skill is missing from the README, the push stops and reports the difference. After pushing md, it switches the local clone back to master.
- Source skills: ~/.agents/skills/ljg-*
- Local clone: ~/code/ljg-skills
- Branch order: master first, then md (the md conversion depends on the master version)
- Output: a report of which skills were pushed, the new version number, and any remaining manual differences
Install the ljg-push skill
Download the ZIP from the skill's page on this directory and unzip it. For a personal install, place the skill folder in ~/.claude/skills/. For a single project, place it in that project's .claude/skills/ folder.
Alternatively, in the Claude apps, open Settings, go to Capabilities, and upload the skill under Skills.
- Personal install: unzip into ~/.claude/skills/
- Project install: unzip into the project's .claude/skills/
- Claude apps: Settings → Capabilities → Skills, then upload
Set up the prerequisites
The skill needs bash, git with SSH credentials for github.com, and rsync. It expects a local clone at ~/code/ljg-skills and source skills at ~/.agents/skills. Bun is needed to run the TypeScript converter and its tests. A local notification server at localhost:31337 is optional.
Git authentication is not handled by the skill. Your SSH key or access token must already work with git@github.com:lijigang/ljg-skills.git, otherwise the push fails with an error.
- bash
- git with SSH credentials for github.com (git@github.com:lijigang/ljg-skills.git)
- rsync
- A local clone at ~/code/ljg-skills and source skills at ~/.agents/skills
- Bun, for the converter and its tests
- Optional: local notification server at localhost:31337
Trigger the skill with natural requests
Ask the agent in plain language. The skill is meant to run when you say /ljg-push, push skills, 推送 skills, 同步 skills, or sync ljg, and whenever ljg-* skills have changed and need shipping.
Use the flags the source documents to control a run. A dry run lists what would be synced and converted without running rsync, commit or push. Force mode syncs every ljg-* skill instead of only changed ones. The README check can be skipped only after you have reviewed the README yourself.
- Full push: /ljg-push
- Preview only: /ljg-push --dry-run (also triggered by phrases like 看一下)
- Sync everything: /ljg-push --force (also triggered by 强推)
- Bypass the README gate after review: /ljg-push --skip-readme-check
/ljg-push --dry-runRead the example runs
A default run detects which ljg-* skills differ from the repo, rsyncs and bumps the version on master, commits and pushes, then repeats the process for md with conversion, and finally switches back to master. A dry run follows the same detection but stops before any change reaches GitHub, so it is the safe way to see the plan first.
- Default run: detect changed skills, master rsync, version bump, commit, push; md rsync, conversion, version bump, commit, push; switch back to master; report
- Dry run: list the skills to sync and the Markdown conversions, with no rsync, commit or push
Safety notes: scripts, network and the public repo
This skill runs scripts and uses the network. Its commits and pushes go to a public GitHub repository, so a mistake becomes public. It is also hardcoded to one author's paths and repo, so it will do the wrong thing on other repositories. Review the diff before you let it push.
The source warns that in some cases an md push can run reset --hard on origin/md after a failed pull --rebase, which discards unpushed local md-branch commits. Also, untracked files such as assets/measure.js are copied by rsync, so delete or gitignore anything you do not want published. The skill automatically bumps the patch version in plugin.json and marketplace.json, so set minor or major versions by hand first.
- Do not use it for non-ljg skills or arbitrary git repos
- Review the diff before pushing; a push to the public repo cannot be undone by the skill
- Local unpushed md-branch commits may be lost in some cases
- Ignored by sync: .git/, node_modules/, .DS_Store (at any depth)
- Real backup files such as .bak and .backup are still synced and reviewed
What people use it for
- Publishing a newly updated ljg-* skill to the master branch and its Markdown version to the md branch in one run.
- Previewing with --dry-run which skills and conversions would be part of a push before anything is made public.
- Studying a worked example of a scripted, multi-branch publishing workflow for agent skills.
- Catching README drift: the README gate flags local skills that the README does not list.
Frequently asked questions
How do I install the ljg-push skill?
Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder. You can also upload it in the Claude apps under Settings → Capabilities → Skills.
What do I need to run ljg-push?
You need bash, git with SSH credentials for github.com, rsync, a local clone at ~/code/ljg-skills, source skills at ~/.agents/skills, and Bun for the converter and its tests. A notification server at localhost:31337 is optional.
Is ljg-push free and what is its licence?
The skill is published under the MIT licence. The source does not mention any price, so check the directory page for any other terms.
Can I use ljg-push to push my own skills or any git repo?
No. The skill is for ljg-* skills only and is hardcoded to one author's paths and the lijigang/ljg-skills repo. The source says it is not for pushing non-ljg skills or arbitrary git repos.
Why did my push stop with a README error?
The README check found a local ljg-* skill that the README does not list, which usually means the README needs updating. Add or remove the relevant lines first; only use --skip-readme-check after you have confirmed the README is correct.
Are there alternatives if I just want to publish a skill to GitHub?
The source does not compare ljg-push with other tools. If you need to publish a different repo or non-ljg skills, you will need a different workflow, because this skill will not work correctly for them.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
ljg-push is worth using if you maintain the ljg-skills collection and want a scripted way to publish changed skills to both the master and md branches. Anyone else should pick a general git workflow or a tool written for their own repo, since this one is hardcoded to a single author's paths and a public repository.
Download the skill