ai-global 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +42 -42
  2. package/ai-global +57 -72
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -105,48 +105,48 @@ The first file found wins (dedup by filename).
105
105
 
106
106
  ## Supported Tools
107
107
 
108
- | Tool | Instructions | Skills | Agents | Rules | Commands | Prompts |
109
- | ----------------- | :----------: | :----: | :----: | :---: | :------: | :-----: |
110
- | Claude Code | | ✓ | | | ✓ | |
111
- | Cursor | | ✓ | | | | ✓ |
112
- | GitHub Copilot | | | | | | |
113
- | Factory Droid | | | | | | |
114
- | Gemini CLI | | ✓ | | | ✓ | |
115
- | Windsurf | | ✓ | ✓ | ✓ | | |
116
- | Kiro | | | ✓ | | | |
117
- | Qodo | | | ✓ | | | |
118
- | Antigravity | | ✓ | | | ✓ | |
119
- | Continue | | | | ✓ | | ✓ |
120
- | Cline | | | | ✓ | | ✓ |
121
- | Roo Code | | | | ✓ | | |
122
- | Sourcegraph Cody | | | | | ✓ | |
123
- | CodeGPT | | | | | | ✓ |
124
- | GPT Engineer | ✓ | | | | | ✓ |
125
- | Smol Developer | | | | | | ✓ |
126
- | Amp | | | | | | |
127
- | Trae | | | | | | |
128
- | OpenCode | | | | | | |
129
- | OpenAI Codex | | | | | | |
130
- | Aider | | | | | | |
131
- | Codeium | | | | | | |
132
- | TabNine | | | | | | |
133
- | Zed | | | | | | |
134
- | Aide | | | | | | |
135
- | PearAI | | | | | | |
136
- | Supermaven | | | | | | |
137
- | CodeStory | | | | | | |
138
- | Double | | | | | | |
139
- | Blackbox AI | | | | | | |
140
- | Amazon Q | | | | | | |
141
- | Copilot Workspace | | | | | | |
142
- | Goose AI | | | | | | |
143
- | Mentat | | | | | | |
144
- | Melty | | | | | | |
145
- | Void | | | | | | |
146
- | Qoder | | | | | | |
147
- | Augment | | | ✓ | ✓ | | |
148
- | Codebuff | | | ✓ | | | |
149
- | CodeBuddy | | | ✓ | | | |
108
+ | Tool | Key | Global | Skills | Agents | Rules | Commands | Prompts |
109
+ | ----------------- | ------------------- | :----: | :----: | :----: | :---: | :------: | :-----: |
110
+ | Claude Code | `claude` | | ✓ | | | ✓ | |
111
+ | Cursor | `cursor` | | ✓ | | | | ✓ |
112
+ | GitHub Copilot | `github-copilot` | | | | | | |
113
+ | Factory Droid | `droid` | | | | | | |
114
+ | Gemini CLI | `gemini` | | ✓ | | | ✓ | |
115
+ | Windsurf | `windsurf` | | ✓ | ✓ | ✓ | | |
116
+ | Kiro | `kiro` | | | ✓ | | | |
117
+ | Qodo | `qodo` | | | ✓ | | | |
118
+ | Antigravity | `antigravity` | ✓ | ✓ | | | ✓ | |
119
+ | Continue | `continue` | | | | ✓ | | ✓ |
120
+ | Cline | `cline` | | | | ✓ | | ✓ |
121
+ | Roo Code | `roo` | | | | ✓ | | |
122
+ | Sourcegraph Cody | `cody` | | | | | ✓ | |
123
+ | CodeGPT | `codegpt` | | | | | | ✓ |
124
+ | GPT Engineer | `gpt-engineer` | | | | | | ✓ |
125
+ | Smol Developer | `smol` | | | | | | ✓ |
126
+ | Amp | `amp` | | | | | | |
127
+ | Trae | `trae` | | | | | | |
128
+ | OpenCode | `opencode` | | | | | | |
129
+ | OpenAI Codex | `codex` | | | | | | |
130
+ | Aider | `aider` | | | | | | |
131
+ | Codeium | `codeium` | | | | | | |
132
+ | TabNine | `tabnine` | | | | | | |
133
+ | Zed | `zed` | | | | | | |
134
+ | Aide | `aide` | | | | | | |
135
+ | PearAI | `pearai` | | | | | | |
136
+ | Supermaven | `supermaven` | | | | | | |
137
+ | CodeStory | `codestory` | | | | | | |
138
+ | Double | `double` | | | | | | |
139
+ | Blackbox AI | `blackbox` | | | | | | |
140
+ | Amazon Q | `amazonq` | | | | | | |
141
+ | Copilot Workspace | `copilot-workspace` | | | | | | |
142
+ | Goose AI | `goose` | | | | | | |
143
+ | Mentat | `mentat` | | | | | | |
144
+ | Melty | `melty` | | | | | | |
145
+ | Void | `void` | | | | | | |
146
+ | Qoder | `qoder` | | | | | | |
147
+ | Augment | `augment` | | | ✓ | ✓ | | |
148
+ | Codebuff | `codebuff` | | | ✓ | | | |
149
+ | CodeBuddy | `codebuddy` | | | ✓ | | | |
150
150
 
151
151
  ## Uninstall
152
152
 
package/ai-global CHANGED
@@ -15,22 +15,7 @@ COMMANDS_DIR="$CONFIG_DIR/commands"
15
15
  PROMPTS_DIR="$CONFIG_DIR/prompts"
16
16
 
17
17
  # Version
18
- VERSION=""
19
- if [[ -L "${BASH_SOURCE[0]}" ]]; then
20
- SCRIPT_DIR="$(cd "$(dirname "$(readlink "${BASH_SOURCE[0]}")")" && pwd)"
21
- else
22
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
23
- fi
24
- PACKAGE_JSON="$SCRIPT_DIR/package.json"
25
-
26
- if [[ -f "$PACKAGE_JSON" ]]; then
27
- # More robust version extraction
28
- VERSION=$(grep -m 1 '"version"' "$PACKAGE_JSON" 2>/dev/null | sed -E 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/' | sed 's/[[:space:]]*,$//')
29
- fi
30
-
31
- if [[ -z "$VERSION" ]]; then
32
- VERSION="unknown"
33
- fi
18
+ VERSION="1.10.0"
34
19
 
35
20
  # Colors
36
21
  RED='\033[0;31m'
@@ -105,49 +90,49 @@ log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
105
90
  log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
106
91
 
107
92
  # Known AI tool patterns
108
- # Format: dir|name|instr_file|skills_dir|agents_dir|rules_dir|commands_dir|prompts_dir
93
+ # Format: dir|key|name|instr_file|skills_dir|agents_dir|rules_dir|commands_dir|prompts_dir
109
94
  declare -a KNOWN_PATTERNS=(
110
- ".claude|Claude Code|CLAUDE.md|skills|.|.|commands|."
111
- ".cursor|Cursor|rules/global.md|skills|.|.|.|prompts"
112
- ".factory|Factory Droid|droids/global.md|.|.|.|.|."
113
- ".amp|Amp|instructions.md|.|.|.|.|."
114
- ".antigravity|Antigravity|CLAUDE.md|skills|.|.|commands|."
115
- ".gemini|Gemini CLI|GEMINI.md|skills|.|.|commands|."
116
- ".kiro|Kiro|steering/global.md|.|agents|.|.|."
95
+ ".claude|claude|Claude Code|CLAUDE.md|skills|.|.|commands|."
96
+ ".cursor|cursor|Cursor|rules/global.md|skills|.|.|.|prompts"
97
+ ".factory|droid|Factory Droid|droids/global.md|.|.|.|.|."
98
+ ".amp|amp|Amp|instructions.md|.|.|.|.|."
99
+ ".antigravity|antigravity|Antigravity|CLAUDE.md|skills|.|.|commands|."
100
+ ".gemini|gemini|Gemini CLI|GEMINI.md|skills|.|.|commands|."
101
+ ".kiro|kiro|Kiro|steering/global.md|.|agents|.|.|."
117
102
  ".opencode|OpenCode|instructions.md|.|.|.|.|."
118
103
  ".qoder|Qoder|instructions.md|.|.|.|.|."
119
- ".qodo|Qodo|instructions.md|.|agents|.|.|."
120
- ".config/github-copilot|GitHub Copilot|instructions.md|.|.|.|.|."
121
- ".aider|Aider|.aider.conf.yml|.|.|.|.|."
122
- ".continue|Continue|config.json|.|.|rules|.|prompts"
123
- ".codeium|Codeium|config.json|.|.|.|.|."
124
- ".tabnine|TabNine|tabnine_config.json|.|.|.|.|."
125
- ".sourcegraph|Sourcegraph Cody|cody.json|.|.|.|commands|."
126
- ".codegpt|CodeGPT|settings.json|.|.|.|.|prompts"
127
- ".windsurf|Windsurf|instructions.md|skills|agents|rules|.|."
128
- ".trae|Trae|instructions.md|.|.|.|.|."
129
- ".melty|Melty|instructions.md|.|.|.|.|."
130
- ".void|Void|instructions.md|.|.|.|.|."
131
- ".roo|Roo Code|instructions.md|.|.|rules|.|."
132
- ".zed|Zed|settings.json|.|.|.|.|."
133
- ".cline|Cline|instructions.md|.|.|rules|.|prompts"
134
- ".aide|Aide|instructions.md|.|.|.|.|."
135
- ".pear|PearAI|instructions.md|.|.|.|.|."
136
- ".supermaven|Supermaven|config.json|.|.|.|.|."
137
- ".codestory|CodeStory|instructions.md|.|.|.|.|."
138
- ".double|Double|instructions.md|.|.|.|.|."
139
- ".blackbox|Blackbox AI|config.json|.|.|.|.|."
140
- ".amazonq|Amazon Q|instructions.md|.|.|.|.|."
141
- ".copilot-workspace|Copilot Workspace|instructions.md|.|.|.|.|."
142
- ".codex|OpenAI Codex|instructions.md|skills|agents|rules|.|."
143
- ".goose|Goose AI|instructions.md|skills|agents|rules|.|."
144
- ".mentat|Mentat|instructions.md|skills|agents|rules|.|."
145
- ".gpt-engineer|GPT Engineer|instructions.md|skills|agents|rules|.|prompts"
146
- ".smol|Smol Developer|instructions.md|skills|agents|rules|.|prompts"
147
- ".config/opencode|OpenCode Config|instructions.md|.|.|.|.|."
148
- ".augment|Augment|instructions.md|.|agents|rules|.|."
149
- ".codebuff|Codebuff|instructions.md|.|agents|.|.|."
150
- ".codebuddy|CodeBuddy|settings.json|.|agents|.|.|."
104
+ ".qodo|qodo|Qodo|instructions.md|.|agents|.|.|."
105
+ ".config/github-copilot|github-copilot|GitHub Copilot|instructions.md|.|.|.|.|."
106
+ ".aider|aider|Aider|.aider.conf.yml|.|.|.|.|."
107
+ ".continue|continue|Continue|config.json|.|.|rules|.|prompts"
108
+ ".codeium|codeium|Codeium|config.json|.|.|.|.|."
109
+ ".tabnine|tabnine|TabNine|tabnine_config.json|.|.|.|.|."
110
+ ".sourcegraph|cody|Sourcegraph Cody|cody.json|.|.|.|commands|."
111
+ ".codegpt|codegpt|CodeGPT|settings.json|.|.|.|.|prompts"
112
+ ".windsurf|windsurf|Windsurf|instructions.md|skills|agents|rules|.|."
113
+ ".trae|trae|Trae|instructions.md|.|.|.|.|."
114
+ ".melty|melty|Melty|instructions.md|.|.|.|.|."
115
+ ".void|void|Void|instructions.md|.|.|.|.|."
116
+ ".roo|roo|Roo Code|instructions.md|.|.|rules|.|."
117
+ ".zed|zed|Zed|settings.json|.|.|.|.|."
118
+ ".cline|cline|Cline|instructions.md|.|.|rules|.|prompts"
119
+ ".aide|aide|Aide|instructions.md|.|.|.|.|."
120
+ ".pear|pear|PearAI|instructions.md|.|.|.|.|."
121
+ ".supermaven|supermaven|Supermaven|config.json|.|.|.|.|."
122
+ ".codestory|codestory|CodeStory|instructions.md|.|.|.|.|."
123
+ ".double|double|Double|instructions.md|.|.|.|.|."
124
+ ".blackbox|blackbox|Blackbox AI|config.json|.|.|.|.|."
125
+ ".amazonq|amazonq|Amazon Q|instructions.md|.|.|.|.|."
126
+ ".copilot-workspace|copilot-workspace|Copilot Workspace|instructions.md|.|.|.|.|."
127
+ ".codex|codex|OpenAI Codex|instructions.md|skills|agents|rules|.|."
128
+ ".goose|goose|Goose AI|instructions.md|skills|agents|rules|.|."
129
+ ".mentat|mentat|Mentat|instructions.md|skills|agents|rules|.|."
130
+ ".gpt-engineer|gpt-engineer|GPT Engineer|instructions.md|skills|agents|rules|.|prompts"
131
+ ".smol|smol|Smol Developer|instructions.md|skills|agents|rules|.|prompts"
132
+ ".config/opencode|opencode|OpenCode Config|instructions.md|.|.|.|.|."
133
+ ".augment|augment|Augment|instructions.md|.|agents|rules|.|."
134
+ ".codebuff|codebuff|Codebuff|instructions.md|.|agents|.|.|."
135
+ ".codebuddy|codebuddy|CodeBuddy|settings.json|.|agents|.|.|."
151
136
  )
152
137
 
153
138
  # Backup a file or directory
@@ -248,7 +233,7 @@ show_status() {
248
233
  local instr_output=""
249
234
  for pattern in "${KNOWN_PATTERNS[@]}"; do
250
235
  local p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts
251
- IFS='|' read -r p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
236
+ IFS='|' read -r p_dir p_key p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
252
237
 
253
238
  if [[ "$p_instr" != "." ]] && [[ "$p_instr" != *.json ]] && [[ "$p_instr" != *.yml ]]; then
254
239
  local target="$HOME/$p_dir/$p_instr"
@@ -272,7 +257,7 @@ show_status() {
272
257
  local type_output=""
273
258
  for pattern in "${KNOWN_PATTERNS[@]}"; do
274
259
  local p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts
275
- IFS='|' read -r p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
260
+ IFS='|' read -r p_dir p_key p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
276
261
 
277
262
  local type_dir=""
278
263
  case "$type_name" in
@@ -314,12 +299,12 @@ show_status() {
314
299
  list_supported() {
315
300
  log_info "Supported AI tools:"
316
301
  echo ""
317
- printf " ${BLUE}%-20s %-22s %-10s %-10s %-10s %-10s %-10s %s${NC}\n" "Tool" "Directory" "Skills" "Agents" "Rules" "Cmds" "Prompts" "Status"
318
- echo " --------------------------------------------------------------------------------------------------------------------------------"
302
+ printf " ${BLUE}%-18s %-18s %-20s %-6s %-6s %-7s %-5s %-8s %s${NC}\n" "Tool" "Key" "Directory" "Skills" "Agents" "Rules" "Cmds" "Prompts" "Status"
303
+ echo " ---------------------------------------------------------------------------------------------------------"
319
304
 
320
305
  for pattern in "${KNOWN_PATTERNS[@]}"; do
321
306
  local p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts
322
- IFS='|' read -r p_dir p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
307
+ IFS='|' read -r p_dir p_key p_name p_instr p_skills p_agents p_rules p_cmds p_prompts <<< "$pattern"
323
308
  local full_path="$HOME/$p_dir"
324
309
 
325
310
  local s_str="." a_str="." r_str="." c_str="." p_str="."
@@ -345,8 +330,8 @@ list_supported() {
345
330
  # Use manual padding because printf handles multibyte characters (✓) by byte count in Bash 3.2.
346
331
  # Each category block matches the header's "%-10s " (11 characters total).
347
332
  # We use indicator + 10 spaces = 11 characters.
348
- printf " %b%-20s %-22s%b %s %s %s %s %s %b\n" \
349
- "$tool_color" "$p_name" "$p_dir" "$NC" "$s_str" "$a_str" "$r_str" "$c_str" "$p_str" "$status"
333
+ printf " %b%-18s %-18s %-22s%b %s %s %s %s %s %b\n" \
334
+ "$tool_color" "$p_name" "$p_key" "$p_dir" "$NC" "$s_str" "$a_str" "$r_str" "$c_str" "$p_str" "$status"
350
335
  done
351
336
  echo ""
352
337
  }
@@ -365,8 +350,8 @@ list_backups() {
365
350
  return
366
351
  fi
367
352
 
368
- printf " ${BLUE}%-25s %-12s %s${NC}\n" "Tool" "Type" "Backup File"
369
- echo " --------------------------------------------------------------------"
353
+ printf " ${BLUE}%-14s %-10s %s${NC}\n" "Tool" "Type" "Backup File"
354
+ echo " -----------------------------------------------------------------------------------"
370
355
 
371
356
  while read -r filename; do
372
357
  [[ -z "$filename" ]] && continue
@@ -385,7 +370,7 @@ list_backups() {
385
370
  local tool_color=$(get_tool_color "${tool_name//_/ }")
386
371
  # Print the backup filename as a path prefixed with ~/ using beautify_path
387
372
  local backup_path=$(beautify_path "$BACKUP_DIR/$filename")
388
- printf " %s%-25s %-12s %s%b\n" "$tool_color" "$tool_name" "$type" "$backup_path" "$NC"
373
+ printf " %s%-14s %-10s %s%b\n" "$tool_color" "$tool_name" "$type" "$backup_path" "$NC"
389
374
  done <<< "$backups_list"
390
375
  echo ""
391
376
  }
@@ -396,7 +381,7 @@ collect_instructions() {
396
381
  local found_count=0
397
382
 
398
383
  for pattern in "${KNOWN_PATTERNS[@]}"; do
399
- IFS='|' read -r dir_name tool_name instr_file skills agents rules commands prompts <<< "$pattern"
384
+ IFS='|' read -r dir_name key tool_name instr_file skills agents rules commands prompts <<< "$pattern"
400
385
 
401
386
  if [[ "$instr_file" != "." ]] && [[ "$instr_file" != *.json ]] && [[ "$instr_file" != *.yml ]]; then
402
387
  local actual_path="$HOME/$dir_name/$instr_file"
@@ -440,7 +425,7 @@ update_tools() {
440
425
  local tool_count=0
441
426
 
442
427
  for pattern in "${KNOWN_PATTERNS[@]}"; do
443
- IFS='|' read -r dir_name tool_name instr_file skills agents rules commands prompts <<< "$pattern"
428
+ IFS='|' read -r dir_name key tool_name instr_file skills agents rules commands prompts <<< "$pattern"
444
429
  local full_path="$HOME/$dir_name"
445
430
 
446
431
  if [[ -d "$full_path" ]]; then
@@ -488,7 +473,7 @@ update_tools() {
488
473
  log_info "Creating symlinks..."
489
474
 
490
475
  for pattern in "${KNOWN_PATTERNS[@]}"; do
491
- IFS='|' read -r dir_name tool_name instr_file skills agents rules commands prompts <<< "$pattern"
476
+ IFS='|' read -r dir_name key tool_name instr_file skills agents rules commands prompts <<< "$pattern"
492
477
  local full_path="$HOME/$dir_name"
493
478
 
494
479
  if [[ -d "$full_path" ]]; then
@@ -603,7 +588,7 @@ unlink_all_tools() {
603
588
  local unlinked_count=0
604
589
  # Scan all known patterns to find and remove any symlinks
605
590
  for pattern in "${KNOWN_PATTERNS[@]}"; do
606
- IFS='|' read -r dir_name tool_name instr_file skills agents rules commands prompts <<< "$pattern"
591
+ IFS='|' read -r dir_name key tool_name instr_file skills agents rules commands prompts <<< "$pattern"
607
592
  if unlink_single_tool "$tool_name" "$dir_name" "$instr_file" "$skills" "$agents" "$rules" "$commands" "$prompts"; then
608
593
  ((unlinked_count++))
609
594
  fi
@@ -649,11 +634,11 @@ unlink_tool() {
649
634
  local found=false
650
635
 
651
636
  for pattern in "${KNOWN_PATTERNS[@]}"; do
652
- IFS='|' read -r dir_name tool_name instr_file skills agents rules commands prompts <<< "$pattern"
637
+ IFS='|' read -r dir_name key tool_name instr_file skills agents rules commands prompts <<< "$pattern"
653
638
  local tool_lower=$(echo "$tool_name" | tr '[:upper:]' '[:lower:]')
654
639
  local query_lower=$(echo "$tool_query" | tr '[:upper:]' '[:lower:]')
655
640
 
656
- if [[ "$tool_lower" == *"$query_lower"* ]] || [[ "$dir_name" == *"$query_lower"* ]]; then
641
+ if [[ "$tool_lower" == *"$query_lower"* ]] || [[ "$dir_name" == *"$query_lower"* ]] || [[ "$key" == "$query_lower" ]]; then
657
642
  if ! unlink_single_tool "$tool_name" "$dir_name" "$instr_file" "$skills" "$agents" "$rules" "$commands" "$prompts"; then
658
643
  log_info "$tool_name is not currently linked."
659
644
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-global",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "description": "Unified configuration manager for AI coding assistants",
5
5
  "bin": {
6
6
  "ai-global": "ai-global"