Skip to content

feat: unify agent skills directories into .agents/skills - #139

Open
dclong wants to merge 1 commit into
mainfrom
push-tuvylrlmnqwy
Open

feat: unify agent skills directories into .agents/skills#139
dclong wants to merge 1 commit into
mainfrom
push-tuvylrlmnqwy

Conversation

@dclong

@dclong dclong commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • feat(agentsify): unify agent skills directories into .agents/skills

Changed files

Added

  • .claude/skills (+1/-0)
    Modified
  • functions/agentsify.fish (+227/-19)
    Removed
  • .gemini/add_function.toml (+0/-6)

Commits

  • bc70826 feat(agentsify): unify agent skills directories into .agents/skills

@dclong

dclong commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

Claude finished @dclong's task in 10m 43s —— View job


Claude finished reviewing this PR

  • Gather context (PR diff, changed files, CLAUDE.md)
  • Run code review (/code-review) against origin/main...HEAD
  • Post review feedback
  • Decide on auto-merge eligibility

Review Summary

Reviewed the diff (functions/agentsify.fish +246/-19, .claude/skills +1, .gemini/add_function.toml -6) against origin/main.

🐛 Correctness bug (blocking)

functions/agentsify.fish:247-249 — false "Unified" success message printed even when the symlink fails to create.

ln -s ../.agents/skills "$skills"
or set conflict 1
echo "Unified $name/skills -> .agents/skills"

In fish, or set conflict 1 only gates that one statement — it does not short-circuit the rest of the block. So if ln -s fails (permission error, read-only fs, race condition), conflict is correctly set to 1, but the very next line still unconditionally prints "Unified $name/skills -> .agents/skills", misleading the user about which tool actually got linked. Contrast with _agentsify_files at line 115-117, where the analogous pattern uses or return 1 (which does short-circuit) before its success echo — that's the correct pattern to mirror here, e.g.:

ln -s ../.agents/skills "$skills"
or begin
    set conflict 1
    continue
end
echo "Unified $name/skills -> .agents/skills"

Fix this →

Non-blocking notes

  • functions/agentsify.fish:183mkdir -p -- "$agents_skills" runs before the "aliased tool dir" safety check (lines 191-198), so .agents/skills gets created on disk even on a run that ends up skipping an aliased tool. Not destructive, but slightly inconsistent with the function's otherwise fail-fast ordering.
  • Style/convention: this PR grows functions/agentsify.fish to 7 functions in one file (_agentsify_kind, _agentsify_merge, _agentsify_warn_gitignore, _agentsify_files, _agentsify_skills, plus existing ones). CLAUDE.md's "Modular Functions" guideline calls for one function per file — worth a follow-up split, not a blocker for this change.
  • Duplicated merge logic: the "compare, then rm duplicate or report conflict" pattern appears in both _agentsify_files (127-133) and _agentsify_merge (37-38). Minor duplication; could be factored into a shared helper later.
  • Unrelated deletion: .gemini/add_function.toml (the custom Gemini /add_function scaffolding command) is removed with no replacement elsewhere in the repo. Worth confirming this removal was intentional rather than incidental to the skills-unification change.
  • A candidate issue about glob metacharacters in "$src"/* / "$src"/.* (line 25) was checked and refuted$src is double-quoted, so its contents aren't re-interpreted as glob syntax; only the unquoted /* suffix expands.

Verdict

One real (if low-severity) correctness bug at functions/agentsify.fish:247-249 — misleading success output on link failure. Recommend fixing before merge; everything else is non-blocking cleanup.
· branch push-tuvylrlmnqwy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant