advai-cli 1.0.0__tar.gz

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.
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.4
2
+ Name: advai-cli
3
+ Version: 1.0.0
4
+ Summary: 跨平台 AI Skill 管理器 — 一键 install / uninstall / list / update
5
+ Author: advai
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Advai-X/advai-x-cli
8
+ Project-URL: Issues, https://github.com/Advai-X/advai-x-cli/issues
9
+ Requires-Python: >=3.8
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: click>=8.1
12
+
13
+ # advai — 跨平台 AI Skill 管理器
14
+
15
+ 一个用 Python 写的 CLI,让你可以像安装软件包一样安装/卸载 AI Skills。
16
+
17
+ - **平台**:macOS / Linux / Windows
18
+ - **安装方式**:`pip` / `npm` / `brew` / `curl | bash` 任选
19
+ - **核心命令**:`install` / `uninstall` / `list` / `update` / `info`
20
+
21
+ ---
22
+
23
+ ## 快速开始
24
+
25
+ ```bash
26
+ # 方式一:pip
27
+ pip install advai
28
+
29
+ # 方式二:npm
30
+ npm install -g advai
31
+
32
+ # 方式三:brew
33
+ brew install https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/Formula/advai.rb
34
+
35
+ # 方式四:一键脚本
36
+ curl -fsSL https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/install.sh | bash
37
+ ```
38
+
39
+ 安装完成后:
40
+
41
+ ```bash
42
+ advai --version
43
+ advai --help
44
+ advai install demo-skill
45
+ advai list
46
+ advai info demo-skill
47
+ advai uninstall demo-skill
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 项目结构
53
+
54
+ ```
55
+ advai/ # 核心 CLI(Python)
56
+ __init__.py
57
+ cli.py # 命令行入口(基于 click)
58
+ skills.py # Skill 安装 / 卸载 / 元数据逻辑
59
+ Formula/advai.rb # Homebrew 配方
60
+ bin/advai.js # npm 入口桥接脚本
61
+ install.sh # curl | bash 一键安装脚本
62
+ pyproject.toml # PyPI 打包配置
63
+ package.json # npm 打包配置
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 本地开发
69
+
70
+ ```bash
71
+ # 从源码运行
72
+ python3 -m advai.cli --help
73
+
74
+ # 构建发布包
75
+ python3 -m pip install --upgrade build twine
76
+ python3 -m build
77
+ python3 -m twine upload dist/*
78
+ ```
79
+
80
+ ---
81
+
82
+ ## License
83
+
84
+ MIT
@@ -0,0 +1,72 @@
1
+ # advai — 跨平台 AI Skill 管理器
2
+
3
+ 一个用 Python 写的 CLI,让你可以像安装软件包一样安装/卸载 AI Skills。
4
+
5
+ - **平台**:macOS / Linux / Windows
6
+ - **安装方式**:`pip` / `npm` / `brew` / `curl | bash` 任选
7
+ - **核心命令**:`install` / `uninstall` / `list` / `update` / `info`
8
+
9
+ ---
10
+
11
+ ## 快速开始
12
+
13
+ ```bash
14
+ # 方式一:pip
15
+ pip install advai
16
+
17
+ # 方式二:npm
18
+ npm install -g advai
19
+
20
+ # 方式三:brew
21
+ brew install https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/Formula/advai.rb
22
+
23
+ # 方式四:一键脚本
24
+ curl -fsSL https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/install.sh | bash
25
+ ```
26
+
27
+ 安装完成后:
28
+
29
+ ```bash
30
+ advai --version
31
+ advai --help
32
+ advai install demo-skill
33
+ advai list
34
+ advai info demo-skill
35
+ advai uninstall demo-skill
36
+ ```
37
+
38
+ ---
39
+
40
+ ## 项目结构
41
+
42
+ ```
43
+ advai/ # 核心 CLI(Python)
44
+ __init__.py
45
+ cli.py # 命令行入口(基于 click)
46
+ skills.py # Skill 安装 / 卸载 / 元数据逻辑
47
+ Formula/advai.rb # Homebrew 配方
48
+ bin/advai.js # npm 入口桥接脚本
49
+ install.sh # curl | bash 一键安装脚本
50
+ pyproject.toml # PyPI 打包配置
51
+ package.json # npm 打包配置
52
+ ```
53
+
54
+ ---
55
+
56
+ ## 本地开发
57
+
58
+ ```bash
59
+ # 从源码运行
60
+ python3 -m advai.cli --help
61
+
62
+ # 构建发布包
63
+ python3 -m pip install --upgrade build twine
64
+ python3 -m build
65
+ python3 -m twine upload dist/*
66
+ ```
67
+
68
+ ---
69
+
70
+ ## License
71
+
72
+ MIT
File without changes
@@ -0,0 +1,95 @@
1
+ import click
2
+ import os
3
+ import sys
4
+ import json
5
+
6
+ from advai.skills import install_skill, uninstall_skill, list_skills, update_skill, info_skill
7
+
8
+ SKILLS_DIR = os.path.expanduser("~/.advai/skills")
9
+ CONFIG_DIR = os.path.expanduser("~/.advai")
10
+
11
+
12
+ def _ensure_dirs():
13
+ os.makedirs(SKILLS_DIR, exist_ok=True)
14
+ os.makedirs(CONFIG_DIR, exist_ok=True)
15
+
16
+
17
+ @click.group()
18
+ @click.version_option(package_name="advai")
19
+ def cli():
20
+ """advai — 跨平台 AI Skill 管理器"""
21
+ _ensure_dirs()
22
+
23
+
24
+ @cli.command()
25
+ @click.argument("skill_name")
26
+ @click.option("--force", is_flag=True, help="强制重新安装(覆盖已有版本)")
27
+ def install(skill_name, force):
28
+ """安装一个 Skill: advai install <skill-name>"""
29
+ try:
30
+ install_skill(skill_name, force=force)
31
+ click.echo(f"✅ Skill '{skill_name}' 安装成功")
32
+ except FileExistsError:
33
+ click.echo(f"⚠️ Skill '{skill_name}' 已经存在,使用 --force 可覆盖")
34
+ except Exception as e:
35
+ click.echo(f"❌ 安装失败: {e}", err=True)
36
+ sys.exit(1)
37
+
38
+
39
+ @cli.command()
40
+ @click.argument("skill_name")
41
+ def uninstall(skill_name):
42
+ """卸载一个 Skill: advai uninstall <skill-name>"""
43
+ try:
44
+ uninstall_skill(skill_name)
45
+ click.echo(f"🗑️ Skill '{skill_name}' 已卸载")
46
+ except FileNotFoundError:
47
+ click.echo(f"⚠️ Skill '{skill_name}' 未安装")
48
+ except Exception as e:
49
+ click.echo(f"❌ 卸载失败: {e}", err=True)
50
+ sys.exit(1)
51
+
52
+
53
+ @cli.command(name="list")
54
+ def list_cmd():
55
+ """列出本地已安装的 Skills"""
56
+ skills = list_skills()
57
+ if not skills:
58
+ click.echo("(暂无已安装的 Skill)")
59
+ return
60
+ click.echo("📋 已安装 Skills:")
61
+ for s in skills:
62
+ click.echo(f" • {s}")
63
+
64
+
65
+ @cli.command()
66
+ @click.argument("skill_name", required=False)
67
+ def update(skill_name):
68
+ """更新一个(或全部)Skill: advai update [skill-name]"""
69
+ try:
70
+ updated = update_skill(skill_name)
71
+ if updated:
72
+ for s in updated:
73
+ click.echo(f"🔄 {s} 已更新")
74
+ else:
75
+ click.echo("(没有可更新的 Skill)")
76
+ except Exception as e:
77
+ click.echo(f"❌ 更新失败: {e}", err=True)
78
+ sys.exit(1)
79
+
80
+
81
+ @cli.command()
82
+ @click.argument("skill_name")
83
+ def info(skill_name):
84
+ """查看 Skill 详情: advai info <skill-name>"""
85
+ data = info_skill(skill_name)
86
+ if data is None:
87
+ click.echo(f"⚠️ Skill '{skill_name}' 未安装或无元数据")
88
+ return
89
+ click.echo(f"ℹ️ Skill '{skill_name}':")
90
+ for k, v in data.items():
91
+ click.echo(f" {k}: {v}")
92
+
93
+
94
+ if __name__ == "__main__":
95
+ cli()
@@ -0,0 +1,74 @@
1
+ import os
2
+ import json
3
+ from datetime import datetime
4
+
5
+ SKILLS_DIR = os.path.expanduser("~/.advai/skills")
6
+ CONFIG_DIR = os.path.expanduser("~/.advai")
7
+
8
+
9
+ def _skill_path(skill_name: str) -> str:
10
+ return os.path.join(SKILLS_DIR, skill_name)
11
+
12
+
13
+ def _meta_path(skill_name: str) -> str:
14
+ return os.path.join(_skill_path(skill_name), "skill.json")
15
+
16
+
17
+ def install_skill(skill_name: str, force: bool = False) -> None:
18
+ """安装一个 Skill(当前为占位实现,后续接实际下载/配置逻辑)"""
19
+ path = _skill_path(skill_name)
20
+ if os.path.exists(path) and not force:
21
+ raise FileExistsError(skill_name)
22
+
23
+ os.makedirs(path, exist_ok=True)
24
+ meta = {
25
+ "name": skill_name,
26
+ "version": "0.1.0",
27
+ "installed_at": datetime.utcnow().isoformat() + "Z",
28
+ "status": "installed",
29
+ }
30
+ with open(_meta_path(skill_name), "w", encoding="utf-8") as f:
31
+ json.dump(meta, f, ensure_ascii=False, indent=2)
32
+
33
+
34
+ def uninstall_skill(skill_name: str) -> None:
35
+ import shutil
36
+ path = _skill_path(skill_name)
37
+ if not os.path.exists(path):
38
+ raise FileNotFoundError(skill_name)
39
+ shutil.rmtree(path)
40
+
41
+
42
+ def list_skills():
43
+ if not os.path.isdir(SKILLS_DIR):
44
+ return []
45
+ return sorted(
46
+ name for name in os.listdir(SKILLS_DIR)
47
+ if os.path.isdir(os.path.join(SKILLS_DIR, name)) and not name.startswith(".")
48
+ )
49
+
50
+
51
+ def update_skill(skill_name=None):
52
+ """更新指定或全部已安装 Skill。当前为占位实现:只刷新元数据时间戳。"""
53
+ targets = [skill_name] if skill_name else list_skills()
54
+ updated = []
55
+ for name in targets:
56
+ if not os.path.isdir(_skill_path(name)):
57
+ continue
58
+ try:
59
+ install_skill(name, force=True)
60
+ updated.append(name)
61
+ except Exception:
62
+ continue
63
+ return updated
64
+
65
+
66
+ def info_skill(skill_name: str):
67
+ mp = _meta_path(skill_name)
68
+ if not os.path.isfile(mp):
69
+ sp = _skill_path(skill_name)
70
+ if not os.path.isdir(sp):
71
+ return None
72
+ return {"status": "installed", "version": "unknown"}
73
+ with open(mp, "r", encoding="utf-8") as f:
74
+ return json.load(f)
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.4
2
+ Name: advai-cli
3
+ Version: 1.0.0
4
+ Summary: 跨平台 AI Skill 管理器 — 一键 install / uninstall / list / update
5
+ Author: advai
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Advai-X/advai-x-cli
8
+ Project-URL: Issues, https://github.com/Advai-X/advai-x-cli/issues
9
+ Requires-Python: >=3.8
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: click>=8.1
12
+
13
+ # advai — 跨平台 AI Skill 管理器
14
+
15
+ 一个用 Python 写的 CLI,让你可以像安装软件包一样安装/卸载 AI Skills。
16
+
17
+ - **平台**:macOS / Linux / Windows
18
+ - **安装方式**:`pip` / `npm` / `brew` / `curl | bash` 任选
19
+ - **核心命令**:`install` / `uninstall` / `list` / `update` / `info`
20
+
21
+ ---
22
+
23
+ ## 快速开始
24
+
25
+ ```bash
26
+ # 方式一:pip
27
+ pip install advai
28
+
29
+ # 方式二:npm
30
+ npm install -g advai
31
+
32
+ # 方式三:brew
33
+ brew install https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/Formula/advai.rb
34
+
35
+ # 方式四:一键脚本
36
+ curl -fsSL https://raw.githubusercontent.com/Advai-X/advai-x-cli/main/install.sh | bash
37
+ ```
38
+
39
+ 安装完成后:
40
+
41
+ ```bash
42
+ advai --version
43
+ advai --help
44
+ advai install demo-skill
45
+ advai list
46
+ advai info demo-skill
47
+ advai uninstall demo-skill
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 项目结构
53
+
54
+ ```
55
+ advai/ # 核心 CLI(Python)
56
+ __init__.py
57
+ cli.py # 命令行入口(基于 click)
58
+ skills.py # Skill 安装 / 卸载 / 元数据逻辑
59
+ Formula/advai.rb # Homebrew 配方
60
+ bin/advai.js # npm 入口桥接脚本
61
+ install.sh # curl | bash 一键安装脚本
62
+ pyproject.toml # PyPI 打包配置
63
+ package.json # npm 打包配置
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 本地开发
69
+
70
+ ```bash
71
+ # 从源码运行
72
+ python3 -m advai.cli --help
73
+
74
+ # 构建发布包
75
+ python3 -m pip install --upgrade build twine
76
+ python3 -m build
77
+ python3 -m twine upload dist/*
78
+ ```
79
+
80
+ ---
81
+
82
+ ## License
83
+
84
+ MIT
@@ -0,0 +1,11 @@
1
+ README.md
2
+ pyproject.toml
3
+ advai/__init__.py
4
+ advai/cli.py
5
+ advai/skills.py
6
+ advai_cli.egg-info/PKG-INFO
7
+ advai_cli.egg-info/SOURCES.txt
8
+ advai_cli.egg-info/dependency_links.txt
9
+ advai_cli.egg-info/entry_points.txt
10
+ advai_cli.egg-info/requires.txt
11
+ advai_cli.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ advai = advai.cli:cli
@@ -0,0 +1 @@
1
+ click>=8.1
@@ -0,0 +1 @@
1
+ advai
@@ -0,0 +1,25 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "advai-cli"
7
+ version = "1.0.0"
8
+ description = "跨平台 AI Skill 管理器 — 一键 install / uninstall / list / update"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ license = "MIT"
12
+ authors = [{ name = "advai" }]
13
+ dependencies = [
14
+ "click>=8.1",
15
+ ]
16
+
17
+ [project.scripts]
18
+ advai = "advai.cli:cli"
19
+
20
+ [project.urls]
21
+ Homepage = "https://github.com/Advai-X/advai-x-cli"
22
+ Issues = "https://github.com/Advai-X/advai-x-cli/issues"
23
+
24
+ [tool.setuptools]
25
+ packages = ["advai"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+