Push Skills to GitHub
When to Use
- Use when skill changes are ready to commit and push to the configured skills repo.
- Use when the user asks to save or publish skill updates after validation.
For committing any skill change to the user's private skills repo, git root ~/.agents (this is also the canonical skill folder; .claude and .pi/agent/skills symlink to ~/.agents/skills). Pushes here auto-publish a sanitized public mirror to davidondrej/skills — never push directly to that public repo.
Use this after creating or editing a skill. If the skill is distributed to all agents, do that first (distribute-skill-to-all-agents), then run this to push the canonical copy.
Steps
Not in cmux? (no $CMUX_WORKSPACE_ID): skip the cmux pane steps — just run the git commands from step 2 directly in any available terminal, then verify the push output.
- Open a fresh cmux pane in the current workspace, no focus steal:
cmux new-pane --type terminal --direction right --workspace "$CMUX_WORKSPACE_ID" --focus false cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # note the NEW pane + its surface ref - Stage, commit, push in
~/.agents(send to the new pane's surface):cmux send --surface surface:NEW 'cd ~/.agents && git add -A && git commit -m "<concise message>" && git push' cmux send-key --surface surface:NEW enter - Verify the push landed:
sleep 2 cmux read-screen --surface surface:NEW | tail -15 # expect "main -> main" - Close the pane once confirmed:
cmux close-surface --surface surface:NEW cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm the pane is gone
Notes
- Always run git from
~/.agents(the repo root), not~/.agents/skills. - Write a concise, specific commit message describing the skill change.
- Only push to GitHub when the user asks. Don't push speculatively.
Limitations
- Adapted from
davidondrej/skills; verify local paths, tools, credentials, and agent features before acting. - For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first.