@optima-chat/dev-skills 0.1.6 → 0.1.8

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.
@@ -1,8 +1,8 @@
1
1
  # /logs - 查看服务日志
2
2
 
3
- 快速查看服务日志,支持 Stage/Prod 两个环境。
3
+ 快速查看服务日志,支持 CI/Stage/Prod 三个环境。
4
4
 
5
- **版本**: v0.1.6
5
+ **版本**: v0.1.8
6
6
 
7
7
  ## 使用场景
8
8
 
@@ -25,6 +25,7 @@
25
25
  - `agentic-chat` - AI 聊天服务
26
26
  - `lines` (可选): 显示行数,默认 50
27
27
  - `environment` (可选): 环境,默认 stage
28
+ - `ci` - CI 持续集成环境
28
29
  - `stage` - Stage 预发布环境
29
30
  - `prod` - 生产环境
30
31
 
@@ -34,6 +35,7 @@
34
35
  /logs commerce-backend # 查看 Stage 环境最近 50 行
35
36
  /logs user-auth 100 # 查看 Stage 环境最近 100 行
36
37
  /logs mcp-host 200 prod # 查看 Prod 环境最近 200 行
38
+ /logs commerce-backend 100 ci # 查看 CI 环境最近 100 行
37
39
  ```
38
40
 
39
41
  ## 特殊参数处理
@@ -42,26 +44,62 @@
42
44
 
43
45
  ## Claude Code 执行步骤
44
46
 
47
+ ### 0. CI 环境
48
+
49
+ **访问方式**: SSH + Docker Compose
50
+
51
+ **步骤**:
52
+ ```bash
53
+ # IMPORTANT: 使用单行命令,使用 sshpass 进行密码认证
54
+
55
+ # 获取 CI 服务器配置(从 GitHub Variables)
56
+ CI_USER=$(gh variable get CI_SSH_USER -R Optima-Chat/optima-dev-skills)
57
+ CI_HOST=$(gh variable get CI_SSH_HOST -R Optima-Chat/optima-dev-skills)
58
+ CI_PASSWORD=$(gh variable get CI_SSH_PASSWORD -R Optima-Chat/optima-dev-skills)
59
+
60
+ # 查看日志(根据服务选择不同的 docker-compose.yml 路径)
61
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/commerce-backend && docker compose logs --tail 50 commerce-backend"
62
+ ```
63
+
64
+ **服务映射**(路径 + 服务名):
65
+ - `commerce-backend` → `/data/xuhao/commerce-backend` → `commerce-backend`
66
+ - `user-auth` → `/data/xuhao/user-auth` → `user-auth`
67
+ - `mcp-host` → `/data/xuhao/mcp-host` → `app`
68
+ - `agentic-chat` → `/data/xuhao/agentic-chat` → `optima-ai-chat`
69
+
70
+ **完整命令示例**(先获取配置):
71
+ ```bash
72
+ # 获取配置
73
+ CI_USER=$(gh variable get CI_SSH_USER -R Optima-Chat/optima-dev-skills)
74
+ CI_HOST=$(gh variable get CI_SSH_HOST -R Optima-Chat/optima-dev-skills)
75
+ CI_PASSWORD=$(gh variable get CI_SSH_PASSWORD -R Optima-Chat/optima-dev-skills)
76
+
77
+ # commerce-backend
78
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/commerce-backend && docker compose logs --tail 50 commerce-backend"
79
+
80
+ # user-auth
81
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/user-auth && docker compose logs --tail 50 user-auth"
82
+
83
+ # mcp-host
84
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/mcp-host && docker compose logs --tail 50 app"
85
+
86
+ # agentic-chat
87
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/agentic-chat && docker compose logs --tail 50 optima-ai-chat"
88
+ ```
89
+
45
90
  ### 1. Stage 环境
46
91
 
47
92
  **日志路径格式**: `/ecs/{service}-stage`
48
93
 
49
94
  **步骤**:
50
95
  ```bash
96
+ # IMPORTANT: 必须使用单行命令,不要使用反斜杠换行
97
+
51
98
  # 1. 获取最新的 log stream
52
- STREAM=$(aws logs describe-log-streams \
53
- --log-group-name /ecs/commerce-backend-stage \
54
- --order-by LastEventTime \
55
- --descending \
56
- --max-items 1 \
57
- | jq -r '.logStreams[0].logStreamName')
99
+ STREAM=$(aws logs describe-log-streams --log-group-name /ecs/commerce-backend-stage --order-by LastEventTime --descending --max-items 1 | jq -r '.logStreams[0].logStreamName')
58
100
 
59
101
  # 2. 获取日志内容(纯文本)
60
- aws logs get-log-events \
61
- --log-group-name /ecs/commerce-backend-stage \
62
- --log-stream-name "$STREAM" \
63
- --limit 50 \
64
- | jq -r '.events[] | .message'
102
+ aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-stream-name "$STREAM" --limit 50 | jq -r '.events[] | .message'
65
103
  ```
66
104
 
67
105
  **服务映射**:
@@ -79,12 +117,8 @@ aws logs get-log-events \
79
117
  # 获取日志内容(纯文本)
80
118
  # 注意:Prod 环境的 log stream 通常是固定的 "backend"
81
119
  # 使用 --no-start-from-head 从最新日志开始读取
82
- aws logs get-log-events \
83
- --log-group-name /optima/prod/commerce-backend \
84
- --log-stream-name backend \
85
- --limit 50 \
86
- --no-start-from-head \
87
- | jq -r '.events[] | .message'
120
+ # IMPORTANT: 必须使用单行命令,不要使用反斜杠换行
121
+ aws logs get-log-events --log-group-name /optima/prod/commerce-backend --log-stream-name backend --limit 50 --no-start-from-head | jq -r '.events[] | .message'
88
122
  ```
89
123
 
90
124
  **服务映射**:
@@ -102,35 +136,23 @@ aws logs get-log-events \
102
136
 
103
137
  ### Stage 环境
104
138
  ```bash
139
+ # IMPORTANT: 使用单行命令
105
140
  SERVICE="commerce-backend"
106
141
  LINES=50
107
142
 
108
- # 获取最新 stream
109
- STREAM=$(aws logs describe-log-streams \
110
- --log-group-name /ecs/${SERVICE}-stage \
111
- --order-by LastEventTime --descending --max-items 1 \
112
- | jq -r '.logStreams[0].logStreamName')
113
-
114
- # 显示日志
115
- aws logs get-log-events \
116
- --log-group-name /ecs/${SERVICE}-stage \
117
- --log-stream-name "$STREAM" \
118
- --limit $LINES \
119
- | jq -r '.events[] | .message'
143
+ # 获取最新 stream 并显示日志
144
+ STREAM=$(aws logs describe-log-streams --log-group-name /ecs/${SERVICE}-stage --order-by LastEventTime --descending --max-items 1 | jq -r '.logStreams[0].logStreamName')
145
+ aws logs get-log-events --log-group-name /ecs/${SERVICE}-stage --log-stream-name "$STREAM" --limit $LINES | jq -r '.events[] | .message'
120
146
  ```
121
147
 
122
148
  ### Prod 环境
123
149
  ```bash
150
+ # IMPORTANT: 使用单行命令
124
151
  SERVICE="commerce-backend"
125
152
  LINES=50
126
153
 
127
154
  # 显示主服务日志(从最新开始)
128
- aws logs get-log-events \
129
- --log-group-name /optima/prod/${SERVICE} \
130
- --log-stream-name backend \
131
- --limit $LINES \
132
- --no-start-from-head \
133
- | jq -r '.events[] | .message'
155
+ aws logs get-log-events --log-group-name /optima/prod/${SERVICE} --log-stream-name backend --limit $LINES --no-start-from-head | jq -r '.events[] | .message'
134
156
  ```
135
157
 
136
158
  ## 常见错误处理
@@ -21,7 +21,8 @@
21
21
  "Bash(git commit:*)",
22
22
  "Bash(aws logs get-log-events:*)",
23
23
  "Bash(npm install:*)",
24
- "Bash(optima-dev-skills:*)"
24
+ "Bash(optima-dev-skills:*)",
25
+ "Bash(gh variable set:*)"
25
26
  ],
26
27
  "deny": [],
27
28
  "ask": []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "logs"
3
- description: "当用户请求查看日志、查看服务日志、排查问题、看看日志、检查日志、商品服务日志、后端日志、API日志、正式环境日志、生产环境日志时,使用此技能。支持 Stage、Prod 环境的 commerce-backend、user-auth、mcp-host、agentic-chat 服务。"
3
+ description: "当用户请求查看日志、查看服务日志、排查问题、看看日志、检查日志、商品服务日志、后端日志、API日志、正式环境日志、生产环境日志、CI环境日志、开发环境日志时,使用此技能。支持 CI、Stage、Prod 三个环境的 commerce-backend、user-auth、mcp-host、agentic-chat 服务。"
4
4
  allowed-tools: ["Bash", "SlashCommand"]
5
5
  ---
6
6
 
@@ -142,18 +142,13 @@ INFO - Database query took 3200ms: SELECT * FROM products WHERE...
142
142
 
143
143
  **实现方式**:
144
144
  ```bash
145
+ # IMPORTANT: 使用单行命令,避免反斜杠换行导致的参数解析错误
146
+
145
147
  # 1. 获取最新 log stream
146
- STREAM=$(aws logs describe-log-streams \
147
- --log-group-name /ecs/commerce-backend-stage \
148
- --order-by LastEventTime --descending --max-items 1 \
149
- | jq -r '.logStreams[0].logStreamName')
148
+ STREAM=$(aws logs describe-log-streams --log-group-name /ecs/commerce-backend-stage --order-by LastEventTime --descending --max-items 1 | jq -r '.logStreams[0].logStreamName')
150
149
 
151
150
  # 2. 获取日志
152
- aws logs get-log-events \
153
- --log-group-name /ecs/commerce-backend-stage \
154
- --log-stream-name "$STREAM" \
155
- --limit 100 \
156
- | jq -r '.events[] | .message'
151
+ aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-stream-name "$STREAM" --limit 100 | jq -r '.events[] | .message'
157
152
  ```
158
153
 
159
154
  ### Prod 环境
@@ -170,13 +165,9 @@ aws logs get-log-events \
170
165
 
171
166
  **实现方式**:
172
167
  ```bash
168
+ # IMPORTANT: 使用单行命令,使用 --no-start-from-head 而不是 --start-from-head false
173
169
  # 获取主服务日志
174
- aws logs get-log-events \
175
- --log-group-name /optima/prod/commerce-backend \
176
- --log-stream-name backend \
177
- --limit 100 \
178
- --start-from-head false \
179
- | jq -r '.events[] | .message'
170
+ aws logs get-log-events --log-group-name /optima/prod/commerce-backend --log-stream-name backend --limit 100 --no-start-from-head | jq -r '.events[] | .message'
180
171
  ```
181
172
 
182
173
  **可用的 log streams**:
package/README.md CHANGED
@@ -180,12 +180,14 @@ Claude:
180
180
 
181
181
  ## 🛠️ 开发状态
182
182
 
183
- **当前版本**: 0.1.0 (MVP)
183
+ **当前版本**: 0.1.8
184
184
 
185
185
  **已完成**:
186
186
  - ✅ 1 个跨环境命令:`/logs`
187
187
  - ✅ 1 个任务场景:`logs` skill
188
188
  - ✅ 支持 CI、Stage、Prod 三个环境
189
+ - ✅ CI 环境通过 SSH + Docker Compose 访问
190
+ - ✅ Stage/Prod 通过 AWS CloudWatch Logs 访问
189
191
 
190
192
  **设计原则**:
191
193
  - 命令提供信息(URL、路径、凭证位置),不实现复杂逻辑
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/dev-skills",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Claude Code Skills for Optima development team - cross-environment collaboration tools",
5
5
  "main": "index.js",
6
6
  "bin": {