@dtt_siye/atool 1.1.0 → 1.2.1

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.
package/README.md CHANGED
@@ -1,14 +1,18 @@
1
1
  # aTool - AI 开发者工具集
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.3.0-blue.svg)](VERSION)
3
+ [![npm version](https://img.shields.io/npm/v/@dtt_siye/atool.svg)](https://www.npmjs.com/package/@dtt_siye/atool)
4
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
5
5
  [![Shell](https://img.shields.io/badge/shell-bash-4EAA25.svg)](install.sh)
6
6
 
7
7
  > 一键配置 AI IDE 的 Skills、MCP Servers、Hooks 和项目规则。让任何水平的开发者,通过在 IDE 中正常聊天,就能获得资深架构师的判断力、高级工程师的代码质量标准、和技术文档专家的交付质量。
8
8
 
9
- **一条命令,30 秒完成配置:**
9
+ **两种安装方式,30 秒完成配置:**
10
10
 
11
11
  ```bash
12
+ # 方式一:npm 安装(推荐,全局可用)
13
+ npx @dtt_siye/atool
14
+
15
+ # 方式二:从源码安装
12
16
  git clone --recursive https://github.com/user/atool.git && cd atool
13
17
  ./install.sh --all --yes
14
18
  ```
@@ -36,6 +40,20 @@ git clone --recursive https://github.com/user/atool.git && cd atool
36
40
 
37
41
  ## 快速开始
38
42
 
43
+ ### npm 安装(推荐)
44
+
45
+ ```bash
46
+ # 一键安装到所有 IDE
47
+ npx @dtt_siye/atool
48
+
49
+ # 或全局安装后使用
50
+ npm install -g @dtt_siye/atool
51
+ atool # 安装到所有 IDE
52
+ atool --project ./my-app # 初始化项目
53
+ ```
54
+
55
+ ### 从源码安装
56
+
39
57
  ```bash
40
58
  # 1. 安装到所有 IDE
41
59
  ./install.sh --all --yes
@@ -161,14 +179,16 @@ Java/Spring, React/Next.js, Vue/Nuxt, Svelte, Python, Go, Rust/Tauri, Android, i
161
179
  ## 更新与卸载
162
180
 
163
181
  ```bash
164
- # 更新(一步式:拉取代码 + 自动重装变更组件)
165
- ./install.sh --update
166
-
167
- # 检查更新
168
- ./install.sh --check-updates
169
-
170
- # 卸载(动态扫描并移除所有 aTool 组件)
171
- ./install.sh --uninstall
182
+ # npm 方式
183
+ npm update -g @dtt_siye/atool # 更新
184
+ atool --all --yes # 重新安装
185
+ npm uninstall -g @dtt_siye/atool # 卸载 npm 包
186
+ atool --uninstall # 移除配置
187
+
188
+ # 源码方式
189
+ ./install.sh --update # 一步式更新
190
+ ./install.sh --check-updates # 检查更新
191
+ ./install.sh --uninstall # 移除配置
172
192
  ```
173
193
 
174
194
  更新策略:Skills 按内容 checksum 增量更新,Cursor/Kiro staging 按 checksum 比较,MCP 使用 JSON 深度合并,Hooks 按 MD5 校验。详见 [docs/09-architecture.md](docs/09-architecture.md)。
package/install.sh CHANGED
@@ -584,20 +584,22 @@ main() {
584
584
  targets=("${detected[@]}")
585
585
  fi
586
586
 
587
- log_info "Installing to: ${targets[*]}"
588
587
  echo ""
589
-
590
588
  for ide in "${targets[@]}"; do
591
589
  install_to_ide "$ide"
592
590
  echo ""
593
591
  done
594
592
 
595
- log_success "Installation complete!"
596
- echo ""
597
- log_info "Next steps:"
598
- log_info " 1. Restart your IDE"
599
- log_info " 2. Run /atool-init in a new project to auto-configure"
600
- log_info " 3. Check that MCP servers appear in your IDE's tool list"
593
+ # Build summary results
594
+ local -a summary_results=()
595
+ for ide in "${targets[@]}"; do
596
+ case "$ide" in
597
+ claude) summary_results+=("Claude Code|skills · hooks · MCP") ;;
598
+ cursor) summary_results+=("Cursor |rules · MCP") ;;
599
+ kiro) summary_results+=("Kiro |steering · MCP") ;;
600
+ esac
601
+ done
602
+ show_install_summary "${summary_results[@]}"
601
603
  }
602
604
 
603
605
  main "$@"
package/lib/common.sh CHANGED
@@ -1030,12 +1030,95 @@ show_version() {
1030
1030
  show_banner() {
1031
1031
  echo -e "${CYAN}${BOLD}"
1032
1032
  cat <<'EOF'
1033
- ╔══════════════════════════════════════╗
1034
- ║ aTool - AI Dev Toolkit
1035
- One-command AI IDE configuration ║
1036
- ╚══════════════════════════════════════╝
1033
+ /\_/\ _ _ _ _ /\_/\
1034
+ ( ^.^ ) / \ ___| (_) | |_ _ ( o.o )
1035
+ ( - ) / _ \/ __| | | | | | | | > ~ <
1036
+ /| |\ / ___ \__ \ | | | | |_| | " "
1037
+ (_| |_) /_/ \_\___/_|_| |_|\__, /
1038
+ |___/
1037
1039
  EOF
1038
1040
  echo -e "${NC}"
1039
- echo -e " Version: ${ATOOL_VERSION}"
1041
+ echo -e " ${DIM}v${ATOOL_VERSION} · One command. All AI IDEs.${NC}"
1040
1042
  echo ""
1041
1043
  }
1044
+
1045
+ # ── UI helpers for installation output ───────────────────────────────────
1046
+
1047
+ # IDE section header: ── Claude Code CLI ──────────
1048
+ log_ide_header() {
1049
+ local ide_name="$1"
1050
+ local line_width=48
1051
+ local name_width=${#ide_name}
1052
+ local dash_count=$((line_width - name_width - 3))
1053
+ [[ $dash_count -lt 3 ]] && dash_count=3
1054
+ echo -e "\n ${BOLD}── ${ide_name} ${DIM}$(printf '%0.s─' $(seq 1 $dash_count))${NC}\n"
1055
+ }
1056
+
1057
+ # IDE section complete: ✓ Claude Code CLI complete
1058
+ log_ide_complete() {
1059
+ local ide_name="$1"
1060
+ local detail="${2:-}"
1061
+ if [[ -n "$detail" ]]; then
1062
+ echo -e " ${GREEN}${BOLD}✓${NC} ${ide_name} ${DIM}${detail}${NC}"
1063
+ else
1064
+ echo -e " ${GREEN}${BOLD}✓${NC} ${ide_name} complete"
1065
+ fi
1066
+ }
1067
+
1068
+ # Compact tree item: ├── label ........ status
1069
+ log_tree() {
1070
+ local label="$1"
1071
+ local status="$2"
1072
+ local is_last="${3:-}"
1073
+ local prefix="├──"
1074
+ [[ "$is_last" == "last" ]] && prefix="└──"
1075
+ # Pad label to 24 chars
1076
+ local padded
1077
+ padded=$(printf '%-24s' "$label")
1078
+ # Color-code status
1079
+ case "$status" in
1080
+ unchanged|skipping) echo -e " ${DIM}${prefix} ${padded} unchanged${NC}" ;;
1081
+ UPDATED) echo -e " ${prefix} ${padded} ${YELLOW}${BOLD}↑ updated${NC}" ;;
1082
+ NEW|installed) echo -e " ${prefix} ${padded} ${GREEN}${BOLD}+ new${NC}" ;;
1083
+ configured) echo -e " ${prefix} ${padded} ${status}" ;;
1084
+ *) echo -e " ${prefix} ${padded} ${DIM}${status}${NC}" ;;
1085
+ esac
1086
+ }
1087
+
1088
+ # Sub-section header (indented)
1089
+ log_subsection() {
1090
+ echo -e "\n ${BOLD}$*${NC}"
1091
+ }
1092
+
1093
+ # Install summary box
1094
+ show_install_summary() {
1095
+ echo ""
1096
+ echo -e " ${BOLD}═══════════════════════════════════════════${NC}"
1097
+ echo ""
1098
+ echo -e " ${GREEN}${BOLD}✓${NC} ${BOLD}aTool${NC} ${DIM}v${ATOOL_VERSION}${NC} ${GREEN}${BOLD}installed!${NC}"
1099
+ echo ""
1100
+ # Print each result: "Claude Code|32 skills · 3 hooks"
1101
+ for result in "$@"; do
1102
+ local name="${result%%|*}"
1103
+ local detail="${result#*|}"
1104
+ echo -e " ${BOLD}${name}${NC} ${GREEN}✓${NC} ${DIM}${detail}${NC}"
1105
+ done
1106
+ echo ""
1107
+ echo -e " ${DIM}Next → restart your IDE, then ${BOLD}/atool-init${NC}"
1108
+ echo ""
1109
+ echo -e " ${BOLD}═══════════════════════════════════════════${NC}"
1110
+ }
1111
+
1112
+ # ── Stats tracking (set by install sub-scripts, read by summary) ─────────
1113
+ _ATOOL_STATS_SKILLS_TOTAL=0
1114
+ _ATOOL_STATS_SKILLS_UPDATED=0
1115
+ _ATOOL_STATS_SKILLS_NEW=0
1116
+ _ATOOL_STATS_HOOKS=0
1117
+ _ATOOL_STATS_MCP=0
1118
+ _atool_reset_stats() {
1119
+ _ATOOL_STATS_SKILLS_TOTAL=0
1120
+ _ATOOL_STATS_SKILLS_UPDATED=0
1121
+ _ATOOL_STATS_SKILLS_NEW=0
1122
+ _ATOOL_STATS_HOOKS=0
1123
+ _ATOOL_STATS_MCP=0
1124
+ }
@@ -8,7 +8,7 @@ set -euo pipefail
8
8
  # common.sh must already be loaded.
9
9
 
10
10
  install_claude() {
11
- log_step "Installing to Claude Code CLI..."
11
+ log_ide_header "Claude Code CLI"
12
12
 
13
13
  # Check if claude is installed
14
14
  if ! command -v claude &>/dev/null; then
@@ -32,9 +32,8 @@ install_claude() {
32
32
  # 3. Install MCP servers
33
33
  install_mcp "claude"
34
34
 
35
- log_success "Claude Code CLI installation complete!"
35
+ log_ide_complete "Claude Code CLI" "skills · hooks · MCP"
36
36
  echo ""
37
- log_info "Installed:"
38
37
  log_info " Skills: $claude_skills_dir/"
39
38
  log_info " Hooks: $claude_config_dir/hooks/atool-session-start"
40
39
  log_info " MCP: $claude_config_dir/settings.json"
@@ -187,7 +187,7 @@ generate_cursor_skill_rules() {
187
187
  }
188
188
 
189
189
  install_cursor() {
190
- log_step "Installing to Cursor..."
190
+ log_ide_header "Cursor"
191
191
 
192
192
  # Check if Cursor is installed
193
193
  if ! command -v cursor &>/dev/null; then
@@ -270,7 +270,7 @@ install_cursor() {
270
270
  # 3. Install MCP servers (global, works for Cursor)
271
271
  install_mcp "cursor"
272
272
 
273
- log_success "Cursor installation complete!"
273
+ log_ide_complete "Cursor" "rules staged · MCP configured"
274
274
  echo ""
275
275
  log_info "Installed:"
276
276
  log_info " Rules (staging): $staging_dir/"
@@ -468,7 +468,7 @@ cleanup_project_kiro_steering() {
468
468
  # ── Main Install ───────────────────────────────────────────────────────────
469
469
 
470
470
  install_kiro() {
471
- log_step "Installing to Kiro..."
471
+ log_ide_header "Kiro"
472
472
 
473
473
  # Check if Kiro is installed
474
474
  if ! command -v kiro &>/dev/null; then
@@ -529,7 +529,7 @@ install_kiro() {
529
529
  # 4. Install MCP servers (global, works for Kiro)
530
530
  install_mcp "kiro"
531
531
 
532
- log_success "Kiro installation complete!"
532
+ log_ide_complete "Kiro" "~9 steering · MCP configured"
533
533
  echo ""
534
534
  log_info "Installed:"
535
535
  log_info " Steering (staging): $staging_dir/"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dtt_siye/atool",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "AI Developer Toolkit - 一键配置 AI IDE 的工具集",
5
5
  "bin": {
6
6
  "atool": "bin/atool.js"