v2.8.0
2.8.0 - 2026-08-09
New Feature
Support custom global config locations via each agent's own env var (#145)
Before This Release
Every global skills directory was hard-coded to ~/<agent-dir>/skills. Most supported AI agents can relocate their global config directory with their own environment variable, but ai-skills ignored it, so skills were installed to and listed from a directory the agent never reads.
After This Release
aiskills resolves the global skills directory through the agent's own environment variable when it is set.
| Agent | Env Var | Global Skills Dir when set |
|---|---|---|
| Claude | CLAUDE_CONFIG_DIR |
$CLAUDE_CONFIG_DIR/skills/ |
| Codex | CODEX_HOME |
$CODEX_HOME/skills/ |
| Gemini | GEMINI_CLI_HOME |
$GEMINI_CLI_HOME/.gemini/skills/ |
| Copilot | COPILOT_HOME |
$COPILOT_HOME/skills/ |
CLAUDE_CONFIG_DIR, CODEX_HOME and COPILOT_HOME point at the config directory itself, while GEMINI_CLI_HOME replaces the home root so .gemini is appended to it.
Global install, list, read, search, sync, update and remove all use the relocated directory.
The CLI now also shows where a global path comes from:
- compact labels display the env-var form (e.g.
$CLAUDE_CONFIG_DIR/skills) - resolved paths are annotated with
(from $CLAUDE_CONFIG_DIR) - the location-selection prompt shows the resolved value (e.g.
$CODEX_HOME=~/blah/.codex)
Notes:
- Universal (
~/.agents) has no standard env var across agents, so it always stays under$HOME. - Cursor:
CURSOR_CONFIG_DIRis only documented for the CLI'scli-config.json, not for skills, so it is not honored. - Windsurf has no documented mechanism to relocate
~/.codeium/windsurf. - Project-level directories are never relocated, since no agent supports a custom project dir location.
- Empty variable values are ignored. A leading
~expands to the home directory, and relative paths resolve against the current directory. - When an override makes two agents resolve to the same directory, that directory is now searched only once instead of being reported twice.
installno longer infers the project/global scope from the target path, which would misclassify an override pointing inside the project.
Internal Housekeeping
- Add issue templates (#142)
- Add issue template config (
config.yml) (#143) - Fix malformed YAML in
bug_report.ymlandtask-template.yml(#144) - Bump sbt to
1.12.10(#138) and1.12.11(#139) - Bump
sbt-devoops:3.5.0=>3.5.1(#140) - Bump
actions/checkoutfrom6to7(#141) - Add
dependencyOverridesfororg.scala-native0.5.x+artifacts, so sbt's strict eviction no longer failsupdatewhen the Scala Native plugin andhedgehog-sbtrequest different compatible0.5.xversions oftest-interface
What's Changed
- Update version: to 2.7.1-SNAPSHOT by @kevin-lee in #137
- Bump sbt to
1.12.10by @kevin-lee in #138 - Bump sbt to 1.12.11 by @kevin-lee in #139
- Bump sbt-devoops:
3.5.0=>3.5.1by @kevin-lee in #140 - Bump actions/checkout from 6 to 7 by @dependabot[bot] in #141
- Add issue templates by @kevin-lee in #142
- Add issue template config (config.yml) by @kevin-lee in #143
- Fix malformed yaml in bug_report.yml and task-template.yml by @kevin-lee in #144
- Close #145: Honor each AI agent's own env var for its global config location by @kevin-lee in #146
- ai-skills v2.8.0 by @kevin-lee in #147
New Contributors
- @dependabot[bot] made their first contribution in #141
Full Changelog: v2.7.0...v2.8.0