adhoc-skill
adhoc-skill
Manage user-level skills: create new ones, refine existing ones, or sync from repo to the installed location. All edits happen in the source repo first, then sync one-way to ~/.agents/skills/ and fan out.
Config
~/.adhoc-skill/config.json:
{
"skill_roots": [
"~/code/verneagent/tiny-skills",
"~/code/verneagent"
]
}
skill_roots — directories to search for skill source repos. Each root is scanned for subdirectories containing SKILL.md.
If the config file doesn't exist, ask the user for their skill root directories and create it.
Finding a skill
Search skill_roots in order. For each root, look for <skill-name>/SKILL.md as a direct child. Match by directory name or by the name: field in the SKILL.md frontmatter. First match wins.
Operations
Create (/adhoc-skill create <name>)
- Ask the user: create as an independent repo (new git repo under a skill root) or as a subdirectory of an existing repo (e.g.,
tiny-skills/<name>/)? If only one root exists or the user specifies, skip asking. - Use
skill-creatorto write the skill content under the chosen location. - If independent repo:
git initthe new directory. - Sync to
~/.agents/skills/<name>/(see Sync below). - Fan out symlinks.
Refine (/adhoc-skill refine <name> <what to change>)
Also triggered implicitly when the user says "improve", "fix", or "refine" a skill.
- Find the skill source repo using the search logic above.
- Read and understand the current implementation.
- Make the requested changes in the source repo.
- Show a diff summary and confirm.
- Sync to
~/.agents/skills/<name>/. - Fan out symlinks.
Sync (/adhoc-skill sync <name>)
Also triggered when the user says "install", "deploy", or "repo2skill".
- Find the skill source repo.
- If already installed at
~/.agents/skills/<name>/, diff source vs installed and show changes. - Copy source to
~/.agents/skills/<name>/(excluding.git/,__pycache__/,.DS_Store,node_modules/). - Fan out symlinks:
python3 ~/.agents/skills/adhoc-skill/scripts/fanout.py <name>
Sync All (/adhoc-skill sync --all)
Scan all skill roots, find every skill, and sync + fan out each one.
Sync procedure
rsync -a --delete \
--exclude='.git/' --exclude='__pycache__/' --exclude='.DS_Store' --exclude='node_modules/' \
<source>/ ~/.agents/skills/<name>/
Then fan out:
python3 ~/.agents/skills/adhoc-skill/scripts/fanout.py <name>
No args (/adhoc-skill)
If invoked with no arguments, list all known skills (scan skill_roots) with their status (installed/not installed, in sync/out of sync).
Notes
- One-way only: repo →
~/.agents/skills/. Never modify~/.agents/skills/directly. - Never auto-commit to the source repo. Just edit the files and let the user commit.
- Always read
SKILL.mdbefore making changes to understand the skill's architecture. - The fan-out script discovers targets automatically by checking which agent-facing directories already symlink into
~/.agents/skills/.
More from verneagent/tiny-skills
inscribe
Capture rules, conventions, or code style guidelines into documentation files. Use when the user says "inscribe", "learn", "remember this rule", "add convention", or wants to persist coding guidelines.
4lark-share
Share a knowledge insight or message with a team via Lark group chat webhook. Use when the user says "share", "lark-share", or wants to send a formatted message to a Lark group.
4multi-gh
Fix and standardize GitHub multi-account workflows with gh account switching, SSH host aliases, and safe remote setup. Use when creating repos, pushing code, or diagnosing GitHub auth mismatches across multiple identities.
2retro
Retrospective on mistakes or new conventions — analyze patterns, find root causes, and propose deterministic prevention (static checks > lint > tests > runtime > review > docs). Use when the user says "retro", "反省", "复盘", "怎么防", "how to prevent", or wants to enforce a new convention.
2wksp
Open a new iTerm2 tab with Claude in a worktree or folder, optionally entering handoff mode.
1netmap
Show all network interfaces, LAN neighbors, and Tailscale peers on the current machine. Use when the user asks about network status, neighbors, connected devices, or Tailscale peers.
1