@mison/ag-kit-cn 2.0.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/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +285 -0
- package/.agent/agents/backend-specialist.md +268 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/database-architect.md +225 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +618 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +382 -0
- package/.agent/agents/orchestrator.md +438 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +405 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/mcp_config.json +12 -0
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +84 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +74 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +57 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +201 -0
- package/.agent/skills/behavioral-modes/SKILL.md +264 -0
- package/.agent/skills/brainstorming/SKILL.md +164 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
- package/.agent/skills/clean-code/SKILL.md +200 -0
- package/.agent/skills/code-review-checklist/SKILL.md +125 -0
- package/.agent/skills/database-design/SKILL.md +54 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +50 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +307 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +44 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +432 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +194 -0
- package/.agent/skills/performance-profiling/SKILL.md +149 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +166 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/red-team-tactics/SKILL.md +203 -0
- package/.agent/skills/rust-pro/SKILL.md +190 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +114 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +242 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/restore-localize-compat.md +525 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +295 -0
- package/AGENT_FLOW.md +609 -0
- package/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/adapters/base.js +63 -0
- package/bin/adapters/codex.js +391 -0
- package/bin/adapters/gemini.js +137 -0
- package/bin/ag-kit.js +1336 -0
- package/bin/core/builder.js +80 -0
- package/bin/core/generator.js +59 -0
- package/bin/core/resource-loader.js +64 -0
- package/bin/core/transformer.js +208 -0
- package/bin/interactive.js +65 -0
- package/bin/utils/atomic-writer.js +97 -0
- package/bin/utils/git-helper.js +68 -0
- package/bin/utils/managed-block.js +65 -0
- package/bin/utils/manifest.js +241 -0
- package/bin/utils.js +82 -0
- package/docs/codex-rules-template.md +36 -0
- package/docs/mapping-spec.md +68 -0
- package/docs/multi-target-adapter.md +80 -0
- package/docs/official/README.md +53 -0
- package/docs/official/antigravity/agent-modes-settings.md +64 -0
- package/docs/official/antigravity/rules-workflows.md +96 -0
- package/docs/official/antigravity/skills.md +147 -0
- package/docs/official/codex/agents-md.md +119 -0
- package/docs/official/codex/config-advanced.md +358 -0
- package/docs/official/codex/config-basic.md +141 -0
- package/docs/official/codex/config-reference.md +223 -0
- package/docs/official/codex/config-sample.md +216 -0
- package/docs/official/codex/mcp.md +107 -0
- package/docs/official/codex/rules.md +79 -0
- package/docs/official/codex/skills.md +114 -0
- package/docs/official/sources-index.md +32 -0
- package/docs/operations.md +145 -0
- package/docs/terminology-style-guide.md +69 -0
- package/package.json +51 -0
- package/scripts/postinstall-check.js +112 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 规则(命令审批规则)
|
|
2
|
+
|
|
3
|
+
> 来源:`https://developers.openai.com/codex/rules`
|
|
4
|
+
> 同步日期:2026-02-12
|
|
5
|
+
> 说明:本文件为官方内容的中文整理版,采用标准 Markdown 语法。
|
|
6
|
+
|
|
7
|
+
Codex Rules 用于控制“哪些命令允许在沙箱外执行”,属于安全与审批策略层。
|
|
8
|
+
该能力为实验特性,后续可能调整。
|
|
9
|
+
|
|
10
|
+
## 创建规则文件
|
|
11
|
+
|
|
12
|
+
1. 在 `./codex/rules/` 下创建 `.rules` 文件(例如 `~/.codex/rules/default.rules`)。
|
|
13
|
+
2. 写入规则。
|
|
14
|
+
|
|
15
|
+
示例:在沙箱外执行 `gh pr view` 前必须提示审批。
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
prefix_rule(
|
|
19
|
+
pattern = ["gh", "pr", "view"],
|
|
20
|
+
decision = "prompt",
|
|
21
|
+
justification = "查看 PR 需要人工确认",
|
|
22
|
+
match = [
|
|
23
|
+
"gh pr view 7888",
|
|
24
|
+
"gh pr view --repo openai/codex",
|
|
25
|
+
],
|
|
26
|
+
not_match = [
|
|
27
|
+
"gh pr list",
|
|
28
|
+
],
|
|
29
|
+
)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 规则字段说明
|
|
33
|
+
|
|
34
|
+
`prefix_rule(...)` 常用字段:
|
|
35
|
+
|
|
36
|
+
- `pattern`:命令前缀(按 token 匹配)
|
|
37
|
+
- `decision`:命中后的动作
|
|
38
|
+
- `justification`:规则说明(可选)
|
|
39
|
+
- `match`:应命中的测试样例(可选)
|
|
40
|
+
- `not_match`:不应命中的测试样例(可选)
|
|
41
|
+
|
|
42
|
+
`decision` 常见值:
|
|
43
|
+
|
|
44
|
+
- `prompt`:询问用户
|
|
45
|
+
- `allow`:允许
|
|
46
|
+
- `deny`:拒绝
|
|
47
|
+
|
|
48
|
+
## 关于 shell 包装命令与复合命令
|
|
49
|
+
|
|
50
|
+
常见包装命令包括:
|
|
51
|
+
|
|
52
|
+
- `bash -lc "..."`
|
|
53
|
+
- `sh -c "..."`
|
|
54
|
+
- `zsh -lc "..."`
|
|
55
|
+
- `python -c "..."`
|
|
56
|
+
|
|
57
|
+
在可安全拆分时,Codex 可能提取出真实命令做前缀匹配;
|
|
58
|
+
在不可安全拆分时,会把整体当作一个命令匹配。
|
|
59
|
+
|
|
60
|
+
### 可安全拆分的典型情况
|
|
61
|
+
|
|
62
|
+
- 单一命令、无复杂重定向/管道/变量展开
|
|
63
|
+
- 命令结构明确,不会因拆分改变语义
|
|
64
|
+
|
|
65
|
+
### 不拆分的典型情况
|
|
66
|
+
|
|
67
|
+
- 包含复杂 shell 语法(多条命令、重定向、条件、子 shell 等)
|
|
68
|
+
- 拆分后可能造成语义偏差或安全风险
|
|
69
|
+
|
|
70
|
+
## 测试规则文件
|
|
71
|
+
|
|
72
|
+
建议每条规则都写 `match` / `not_match` 示例,作为“内联单元测试”。
|
|
73
|
+
这样可以在维护规则时快速验证匹配行为,减少误放行或误阻断。
|
|
74
|
+
|
|
75
|
+
## 规则语言边界
|
|
76
|
+
|
|
77
|
+
- Rules 只负责命令级审批策略,不负责业务逻辑说明。
|
|
78
|
+
- 业务约束建议放在 `AGENTS.md` 或项目文档中。
|
|
79
|
+
- 高风险命令建议默认 `prompt` 或 `deny`,再按需要放开。
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Agent 技能(Codex)
|
|
2
|
+
|
|
3
|
+
> 来源:`https://developers.openai.com/codex/skills`
|
|
4
|
+
> 同步日期:2026-02-12
|
|
5
|
+
> 说明:本文件为官方内容的中文整理版,采用标准 Markdown 语法。
|
|
6
|
+
|
|
7
|
+
Skills 用于给 Codex 增加任务专用能力。
|
|
8
|
+
一个 Skill 通常打包了指令、参考资料以及可选脚本,便于 Agent 稳定复用某类流程。
|
|
9
|
+
|
|
10
|
+
Skills 适用于 Codex CLI、IDE 扩展和 Codex App。
|
|
11
|
+
|
|
12
|
+
## Skill 基本结构
|
|
13
|
+
|
|
14
|
+
一个 Skill 目录至少包含 `SKILL.md`:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
my-skill/
|
|
18
|
+
├── SKILL.md # 必需:元信息 + 指令
|
|
19
|
+
├── scripts/ # 可选:可执行脚本
|
|
20
|
+
├── references/ # 可选:参考文档
|
|
21
|
+
└── assets/ # 可选:模板/资源
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`SKILL.md` 需包含 `name` 与 `description`:
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
---
|
|
28
|
+
name: skill-name
|
|
29
|
+
description: 说明该 skill 的用途与触发场景
|
|
30
|
+
metadata:
|
|
31
|
+
short-description: 可选的简短说明
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Skill 标题
|
|
35
|
+
|
|
36
|
+
在此编写可执行指令。
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Codex 如何使用 Skills
|
|
40
|
+
|
|
41
|
+
Codex 采用“渐进式加载”:
|
|
42
|
+
|
|
43
|
+
1. 会话开始时先读取各 Skill 的元信息(`name`、`description`、路径等)。
|
|
44
|
+
2. 仅当某 Skill 与当前任务相关时,才读取完整 `SKILL.md`。
|
|
45
|
+
3. 执行过程中按 Skill 指令调用脚本/引用资料。
|
|
46
|
+
|
|
47
|
+
## 创建 Skill
|
|
48
|
+
|
|
49
|
+
两种方式:
|
|
50
|
+
|
|
51
|
+
- 使用内置 Skill(例如 `$skill-creator`)辅助生成
|
|
52
|
+
- 手动创建目录与 `SKILL.md`
|
|
53
|
+
|
|
54
|
+
手动创建建议流程:
|
|
55
|
+
|
|
56
|
+
1. 创建目录 `my-skill/`
|
|
57
|
+
2. 写好 `SKILL.md` 的 frontmatter
|
|
58
|
+
3. 按需补充 `scripts/`、`references/`、`assets/`
|
|
59
|
+
|
|
60
|
+
## Skill 存放位置
|
|
61
|
+
|
|
62
|
+
常见位置:
|
|
63
|
+
|
|
64
|
+
- 全局:`$HOME/.agents/skills/`
|
|
65
|
+
- 项目:从当前工作目录开始,向上到仓库根目录,按链路扫描 `.agents/skills/`
|
|
66
|
+
|
|
67
|
+
实践建议:
|
|
68
|
+
|
|
69
|
+
- 跨项目复用放全局
|
|
70
|
+
- 项目专属流程放仓库内并随代码版本管理
|
|
71
|
+
|
|
72
|
+
## 安装与管理
|
|
73
|
+
|
|
74
|
+
可通过 CLI 管理技能开关与列表(实际命令以当前版本为准):
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
codex skills list
|
|
78
|
+
codex skills enable <skill-name>
|
|
79
|
+
codex skills disable <skill-name>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
对于 App/Server 场景,也可通过 API 传入 Skill 项。
|
|
83
|
+
|
|
84
|
+
## 可选元数据
|
|
85
|
+
|
|
86
|
+
除必填字段外,可在 frontmatter 增加元数据(如 `short-description`),用于改善 UI 展示和匹配体验。
|
|
87
|
+
但不要把业务逻辑藏在元数据里,核心行为应写在正文指令区。
|
|
88
|
+
|
|
89
|
+
## 编写最佳实践
|
|
90
|
+
|
|
91
|
+
### 1. 描述要能触发
|
|
92
|
+
|
|
93
|
+
`description` 建议写清:
|
|
94
|
+
|
|
95
|
+
- 做什么
|
|
96
|
+
- 何时用
|
|
97
|
+
- 不适用场景
|
|
98
|
+
|
|
99
|
+
### 2. 单一职责
|
|
100
|
+
|
|
101
|
+
一个 Skill 解决一类问题,不要做“万能包”。
|
|
102
|
+
|
|
103
|
+
### 3. 脚本优先可执行
|
|
104
|
+
|
|
105
|
+
把复杂流程写进 `scripts/`,在 `SKILL.md` 中说明参数与调用方式。
|
|
106
|
+
避免要求 Agent 反复阅读大段脚本源码。
|
|
107
|
+
|
|
108
|
+
### 4. 给出决策分支
|
|
109
|
+
|
|
110
|
+
复杂任务建议提供“条件 -> 路径”决策表,降低误用率。
|
|
111
|
+
|
|
112
|
+
### 5. 保持可迁移
|
|
113
|
+
|
|
114
|
+
尽量避免绑定私有路径与私有环境变量,必要时在 `references/` 说明依赖前置条件。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 官方来源证据索引
|
|
2
|
+
|
|
3
|
+
> 用途:为 `docs/official` 中文整理文档提供可机器校验的最小证据层(来源 URL + 拉取时间 + 快照哈希)。
|
|
4
|
+
|
|
5
|
+
## Antigravity
|
|
6
|
+
|
|
7
|
+
| 本地文件 | 来源 URL | 拉取时间 (UTC) | SHA256 |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| `docs/official/antigravity/agent-modes-settings.md` | `https://antigravity.google/assets/docs/agent/agent-modes-settings.md` | `2026-02-12T12:56:22Z` | `614174f8c730a0db8b290dede16b294a9535cef7b9ddca9c108dc2ef583b2919` |
|
|
10
|
+
| `docs/official/antigravity/rules-workflows.md` | `https://antigravity.google/assets/docs/agent/rules-workflows.md` | `2026-02-12T12:56:22Z` | `063b2e9c86555f0103d0fafee5f71caf330cd95fb25257841efe32d36ee9667b` |
|
|
11
|
+
| `docs/official/antigravity/skills.md` | `https://antigravity.google/assets/docs/agent/skills.md` | `2026-02-12T12:56:22Z` | `2176fc1968c2188daed75b064f8771e4516b4b462cc5c1b98553e05cfab055fa` |
|
|
12
|
+
|
|
13
|
+
## Codex
|
|
14
|
+
|
|
15
|
+
| 本地文件 | 来源 URL | 拉取时间 (UTC) | SHA256 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `docs/official/codex/config-basic.md` | `https://developers.openai.com/codex/config-basic.md` | `2026-02-12T12:56:22Z` | `9a270e83da4e3467c117166cc69684cace72037c97c96f0f05f212d28ccf0809` |
|
|
18
|
+
| `docs/official/codex/config-advanced.md` | `https://developers.openai.com/codex/config-advanced.md` | `2026-02-12T12:56:22Z` | `ed1ebb5ad918fd9043ebeb176d1f29654d76547c4ae896eb4718db320f98a1af` |
|
|
19
|
+
| `docs/official/codex/config-reference.md` | `https://developers.openai.com/codex/config-reference.md` | `2026-02-12T12:56:22Z` | `e23bc1439e3f4cb907d165e6980ece03070d69484f74c4cb3dd95068c519a91c` |
|
|
20
|
+
| `docs/official/codex/config-sample.md` | `https://developers.openai.com/codex/config-sample.md` | `2026-02-12T12:56:22Z` | `80af7755383b5f3956b3288435bca81ef02062f6dd988aa6205fe1ae95a3660b` |
|
|
21
|
+
| `docs/official/codex/rules.md` | `https://developers.openai.com/codex/rules.md` | `2026-02-12T12:56:22Z` | `c9ca3c8bf4fa68ccf85c831388ea360b6e2108bcfcfcc0b7bd7e2ab5df173af1` |
|
|
22
|
+
| `docs/official/codex/agents-md.md` | `https://developers.openai.com/codex/guides/agents-md.md` | `2026-02-12T12:56:22Z` | `ed8fd0bdb19826d907424d313d38b37fe9a60c78b96692f409e1f15373817aac` |
|
|
23
|
+
| `docs/official/codex/mcp.md` | `https://developers.openai.com/codex/mcp.md` | `2026-02-12T12:56:22Z` | `bb7d0e864ed572a11067505f9cd673972610d2d53997db3647b309da00763fa2` |
|
|
24
|
+
| `docs/official/codex/skills.md` | `https://developers.openai.com/codex/skills.md` | `2026-02-12T12:56:22Z` | `8ca8093fa07e50d302a76a6693789995bb733208fd3e89022e2ebd2328b3b64c` |
|
|
25
|
+
|
|
26
|
+
## 校验方法
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
shasum -a 256 docs/official/codex/skills.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
将输出哈希与本表对比即可。
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Ag-Kit(命令行工具)运维手册
|
|
2
|
+
|
|
3
|
+
本文面向维护 Ag-Kit 及其管理的 Agent(智能体)资源的 DevOps(运维)或高级用户。
|
|
4
|
+
|
|
5
|
+
## 1. 目录结构详解
|
|
6
|
+
|
|
7
|
+
### 1.1 项目根目录
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
/my-project
|
|
11
|
+
├── .agent/ # Legacy(旧版)Gemini 模式直连目录(使用 Gemini 时)
|
|
12
|
+
├── .agents/ # Codex 托管上游目录(只读/自动管理)
|
|
13
|
+
│ ├── manifest.json # 完整性清单,用于漂移检测
|
|
14
|
+
│ ├── AGENTS.md # 核心规则源(由构建器生成)
|
|
15
|
+
│ ├── antigravity.rules # 风险控制源(由构建器生成)
|
|
16
|
+
│ └── skills/ # 编译后的技能
|
|
17
|
+
├── .agents-backup/ # Codex 自动备份目录(发生漂移覆盖时生成)
|
|
18
|
+
├── .codex/ # Legacy 历史目录(更新/doctor 时自动迁移清理)
|
|
19
|
+
├── AGENTS.md # 工作区主入口(保留用户内容 + 托管区块注入)
|
|
20
|
+
├── antigravity.rules # 工作区托管说明(保留用户内容 + 托管区块注入)
|
|
21
|
+
└── .gitignore # 自动管理的忽略规则
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
> 说明:`antigravity.rules` 是本项目的托管说明文件,不等同于 Codex 官方 `.rules` 审批策略文件。
|
|
25
|
+
> Codex 官方策略文件通常位于 `~/.codex/rules/default.rules`,本项目不会自动写入该全局路径。
|
|
26
|
+
|
|
27
|
+
### 1.2 全局数据
|
|
28
|
+
|
|
29
|
+
- **macOS / Linux**: `~/.ag-kit/workspaces.json`
|
|
30
|
+
- **Windows**: `%USERPROFILE%\.ag-kit\workspaces.json`
|
|
31
|
+
- 默认不会把系统临时目录写入索引(如 macOS `/var/folders/...`、`/tmp`、`/private/tmp`,Linux `/tmp`,Windows `%TEMP%`)。
|
|
32
|
+
- 对临时验证场景,可在 `init/update` 时加 `--no-index` 完全跳过索引登记。
|
|
33
|
+
- `ag-kit update` 仅处理当前目录(或 `--path` 指定目录),不依赖全局索引。
|
|
34
|
+
- `ag-kit update-all` 仅处理索引内工作区;若项目曾使用 `--no-index`,可在项目内执行一次不带 `--no-index` 的 `ag-kit update` 重新纳入索引。
|
|
35
|
+
|
|
36
|
+
## 2. 故障排查
|
|
37
|
+
|
|
38
|
+
### 2.1 更新失败或中断
|
|
39
|
+
|
|
40
|
+
当前版本已引入 Atomic Update(原子更新)机制。
|
|
41
|
+
|
|
42
|
+
- 更新过程先在临时目录准备,最后通过一次 `rename` 操作生效。
|
|
43
|
+
- **现象**: 如果进程在更新阶段被中断,项目目录不会出现半写状态,可能残留临时目录(例如 `/tmp/ag-kit-*`)。
|
|
44
|
+
- **解决**: 无需手动干预,重新运行 update 即可。
|
|
45
|
+
|
|
46
|
+
### 2.2 漂移检测警告
|
|
47
|
+
|
|
48
|
+
当 `ag-kit update` 或 `ag-kit doctor` 报告 Drift(漂移)时:
|
|
49
|
+
|
|
50
|
+
- **原因**: 用户手动修改了 `.agents` 目录下的受管文件。
|
|
51
|
+
- **后果**: 更新时会强制覆盖这些修改。
|
|
52
|
+
- **自动备份**: 覆盖前,Ag-Kit 会将修改过的文件备份到 `.agents-backup/<timestamp>/`。
|
|
53
|
+
- **智能覆盖**: 仅当文件确实是“用户修改且与新版本不同”时才备份;如果本地文件已与新版本一致,不会重复备份。
|
|
54
|
+
- **解决**: 检查备份,将需要的修改迁移到上游源码或通过 Overlay(覆盖层)机制实现。
|
|
55
|
+
|
|
56
|
+
### 2.3 Windows 权限问题
|
|
57
|
+
|
|
58
|
+
- 如果遇到 `EPERM` 或 `EBUSY`:
|
|
59
|
+
- 确保没有 IDE 或终端占用 `.agents` 目录。
|
|
60
|
+
- 关闭占用后重新执行 `ag-kit update` 或 `ag-kit doctor --fix`。
|
|
61
|
+
|
|
62
|
+
### 2.4 Doctor 自愈
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
ag-kit doctor --fix
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- **功能**:
|
|
69
|
+
- 如果 `manifest.json` 丢失,会对照当前文件状态重新生成(注意:这会假设当前状态是正确的)。
|
|
70
|
+
- 会重同步 `AGENTS.md` 和 `antigravity.rules` 的托管区块。
|
|
71
|
+
- Gemini 目标当前不支持自动修复,建议执行 `ag-kit update --target gemini`。
|
|
72
|
+
|
|
73
|
+
## 3. 升级流程
|
|
74
|
+
|
|
75
|
+
### 3.0 Codex 官方 `.rules`(可选)
|
|
76
|
+
|
|
77
|
+
如果你需要启用 Codex 官方命令审批策略(`prefix_rule()` 等),请手动配置 `~/.codex/rules/default.rules`。
|
|
78
|
+
可直接参考:`docs/codex-rules-template.md`。
|
|
79
|
+
|
|
80
|
+
### 3.1 客户端升级
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install -g @mison/ag-kit-cn@latest
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
若你以源码方式安装过,也可以继续使用源码升级:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
git -C /path/to/antigravity-kit-cn pull
|
|
90
|
+
cd /path/to/antigravity-kit-cn
|
|
91
|
+
npm install -g .
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 3.2 资源库迁移:Gemini -> Codex
|
|
95
|
+
|
|
96
|
+
1. 在项目根目录执行:
|
|
97
|
+
```bash
|
|
98
|
+
ag-kit init --target codex --force
|
|
99
|
+
```
|
|
100
|
+
2. 系统会自动识别旧版 `.agent`,将其编译为 `.agents` 结构。
|
|
101
|
+
3. 确认 `.agents` 生成无误。
|
|
102
|
+
4. 移除旧版 `.agent`(可选):
|
|
103
|
+
```bash
|
|
104
|
+
rm -rf .agent
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 4. 日常维护
|
|
108
|
+
|
|
109
|
+
### 4.1 清理本地生成产物
|
|
110
|
+
|
|
111
|
+
在仓库根目录执行:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm run clean
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
- 会清理常见生成目录:`.temp_ag_kit`、`coverage`、`web/.next`、`web/node_modules`、`web/out`、`web/.turbo`。
|
|
118
|
+
- 只想预览,不实际删除:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run clean:dry-run
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 4.2 回归检查
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm test
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- 当前测试命令仅扫描 `tests/` 目录,避免误执行 `web/.next` 等构建产物中的文件。
|
|
131
|
+
- 若需要检查前端代码规范(可选),先安装依赖再执行:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm install --prefix web
|
|
135
|
+
npm run lint --prefix web
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 4.3 一键健康复检
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm run health-check
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
- 会顺序执行:`npm test`、CLI 临时工作区链路验证(`init/status/doctor/update/update-all/exclude`)、`npm run clean:dry-run`。
|
|
145
|
+
- 适合升级后或准备发布前的快速回归确认。
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# 术语风格统一表
|
|
2
|
+
|
|
3
|
+
本表用于约束仓库内中文文案写法,目标是“中文主叙述、术语级双语、机制文本不变形”。
|
|
4
|
+
|
|
5
|
+
## 写法规则
|
|
6
|
+
|
|
7
|
+
1. 中文主叙述:标题、段落、表头、说明文本默认使用中文表达。
|
|
8
|
+
2. 专有名词英文保留:官方名词优先保留英文(如 `Agent(智能体)`、`Strict Mode(严格模式)`、`Task List(任务清单)`)。
|
|
9
|
+
3. 首次双语标注(仅术语级):同一文档首次出现时写作 `English(中文)`,后续可简写为 `English`。
|
|
10
|
+
4. 禁止标题整句双语:禁止 `中文标题 (English sentence...)` 或 `English title (中文整句...)`。
|
|
11
|
+
5. 禁止段落整句双语:禁止“英文整句 + 中文整句括号翻译”并排出现。
|
|
12
|
+
6. 保留关键字:命令、参数、路径、快捷键、按钮文案保持原样(如 `--fix`、`/workflow-name`、`Command + I`)。
|
|
13
|
+
7. 机制文本例外:代码块、命令块、Frontmatter key、配置键名不做双语拼接。
|
|
14
|
+
8. 示例命令含提示词时:仅翻译 prompt/query(提示词)语义,命令结构保持不变。
|
|
15
|
+
9. 语义优先:不改变机制、不改变行为,仅调整语言表述。
|
|
16
|
+
|
|
17
|
+
## 统一术语
|
|
18
|
+
|
|
19
|
+
| 推荐写法 | 可接受别名(仅历史兼容) | 说明 |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| Agent(智能体) | 智能体 | 平台执行主体;首现必须双语 |
|
|
22
|
+
| Skill(技能) | Skills、技能 | 能力模块;首现必须双语 |
|
|
23
|
+
| Workflow(工作流) | Workflows、工作流 | 任务流程;首现必须双语 |
|
|
24
|
+
| Workspace(工作区) | 工作空间 | 项目作用域 |
|
|
25
|
+
| Global(全局) | Global | 跨工作区作用域 |
|
|
26
|
+
| Allowlist(允许列表) | 允许列表 | 白名单语义 |
|
|
27
|
+
| Denylist(拒绝列表) | 拒绝列表 | 黑名单语义 |
|
|
28
|
+
| Strict Mode(严格模式) | Strict Mode | 安全策略组合;首现必须双语 |
|
|
29
|
+
| Sandboxing(终端沙箱) | Sandboxing | 命令执行隔离;首现必须双语 |
|
|
30
|
+
| Artifact(产物) | Artifacts、产物 | 过程与结果载体;首现必须双语 |
|
|
31
|
+
| Command(命令面板) | Command | 内联指令入口;首现必须双语 |
|
|
32
|
+
| MCP Store(MCP 商店) | MCP Store | MCP 连接入口;首现必须双语 |
|
|
33
|
+
| Browser Subagent(浏览器子智能体) | Browser Subagent | 浏览器操作代理;首现必须双语 |
|
|
34
|
+
| Task List(任务清单) | Task List | 任务追踪产物;首现必须双语 |
|
|
35
|
+
| Implementation Plan(实施计划) | Implementation Plan | 计划产物;首现必须双语 |
|
|
36
|
+
| Knowledge(知识库) | Knowledge | 持久化知识能力;首现必须双语 |
|
|
37
|
+
|
|
38
|
+
## 双语边界(强制)
|
|
39
|
+
|
|
40
|
+
- 允许(术语级):
|
|
41
|
+
- `Orchestrator skill(编排器技能)`
|
|
42
|
+
- `MCP(模型上下文协议)`
|
|
43
|
+
- 禁止(整句级):
|
|
44
|
+
- `This skill routes to sub-skills.(此技能会路由到子技能。)`
|
|
45
|
+
- `## 移动端设计系统 (Mobile Design System)`
|
|
46
|
+
|
|
47
|
+
## 首次标注模板
|
|
48
|
+
|
|
49
|
+
- 正文首现:`Agent(智能体)`、`Workflow(工作流)`、`MCP(模型上下文协议)`
|
|
50
|
+
- 后续正文:`Agent`、`Workflow`、`MCP`
|
|
51
|
+
- 禁止写法:`智能体(Agent)` 作为主格式、`Agent智能体`(无括号)、`Agent/智能体`(斜杠混写)、`中文标题 (English sentence)`
|
|
52
|
+
|
|
53
|
+
## 示例命令中的提示词翻译
|
|
54
|
+
|
|
55
|
+
- 目标:让示例命令在中文语境下可直接复用,同时不破坏命令机制。
|
|
56
|
+
- 规则:只翻译自然语言提示词;命令、参数、路径、开关、子命令保持原样。
|
|
57
|
+
- 示例:
|
|
58
|
+
- 原文:`python scripts/search.py "fintech crypto" --design-system`
|
|
59
|
+
- 推荐:`python scripts/search.py "金融 科技 加密" --design-system`
|
|
60
|
+
- 推荐:`python scripts/search.py "为金融科技产品生成设计系统关键词" --design-system`
|
|
61
|
+
|
|
62
|
+
## 当前覆盖范围(2026-02)
|
|
63
|
+
|
|
64
|
+
- `.agent/**/*.md`(含 `agents/`、`skills/`、`workflows/`、`ARCHITECTURE.md`)
|
|
65
|
+
- `README.md`
|
|
66
|
+
- `AGENT_FLOW.md`
|
|
67
|
+
- `docs/*.md`
|
|
68
|
+
|
|
69
|
+
后续新增文档默认遵循本表;若与上游机制冲突,先按 `reference/antigravity-kit` 对齐结构,再做语义汉化。
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mison/ag-kit-cn",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "AI Agent templates - Skills, Agents, and Workflows for enhanced coding assistance",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/MisonL/antigravity-kit-cn.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/MisonL/antigravity-kit-cn#readme",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/MisonL/antigravity-kit-cn/issues"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"antigravity",
|
|
15
|
+
"ai",
|
|
16
|
+
"agent",
|
|
17
|
+
"gemini",
|
|
18
|
+
"skills",
|
|
19
|
+
"templates"
|
|
20
|
+
],
|
|
21
|
+
"author": "vudovn",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"scripts": {
|
|
24
|
+
"clean": "node scripts/clean.js",
|
|
25
|
+
"clean:dry-run": "node scripts/clean.js --dry-run",
|
|
26
|
+
"health-check": "bash scripts/health-check.sh",
|
|
27
|
+
"postinstall": "node scripts/postinstall-check.js",
|
|
28
|
+
"test": "node --test tests"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
".agent/**",
|
|
35
|
+
"bin/**",
|
|
36
|
+
"scripts/postinstall-check.js",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE",
|
|
39
|
+
"CHANGELOG.md",
|
|
40
|
+
"AGENT_FLOW.md",
|
|
41
|
+
"docs/codex-rules-template.md",
|
|
42
|
+
"docs/mapping-spec.md",
|
|
43
|
+
"docs/multi-target-adapter.md",
|
|
44
|
+
"docs/operations.md",
|
|
45
|
+
"docs/terminology-style-guide.md",
|
|
46
|
+
"docs/official/**"
|
|
47
|
+
],
|
|
48
|
+
"bin": {
|
|
49
|
+
"ag-kit": "./bin/ag-kit.js"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { execSync } = require("child_process");
|
|
4
|
+
const readline = require("node:readline");
|
|
5
|
+
const { stdin: input, stdout: output } = require("node:process");
|
|
6
|
+
|
|
7
|
+
const UPSTREAM_GLOBAL_PACKAGE = "@vudovn/ag-kit";
|
|
8
|
+
|
|
9
|
+
const { readGlobalNpmDependencies } = require("../bin/utils");
|
|
10
|
+
|
|
11
|
+
function canPromptUser() {
|
|
12
|
+
return Boolean(input.isTTY && output.isTTY);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function askQuestion(question) {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const rl = readline.createInterface({ input, output });
|
|
18
|
+
rl.question(question, (answer) => {
|
|
19
|
+
rl.close();
|
|
20
|
+
resolve(answer);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function parseYesNo(answer, defaultYes) {
|
|
26
|
+
const text = String(answer || "").trim().toLowerCase();
|
|
27
|
+
if (!text) {
|
|
28
|
+
return defaultYes;
|
|
29
|
+
}
|
|
30
|
+
if (["y", "yes", "1", "true", "是"].includes(text)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (["n", "no", "0", "false", "否"].includes(text)) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return defaultYes;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function askForUninstallConfirmation() {
|
|
40
|
+
const answer = await askQuestion(`是否现在自动卸载 ${UPSTREAM_GLOBAL_PACKAGE}?[Y/n]: `);
|
|
41
|
+
return parseYesNo(answer, true);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function uninstallUpstreamPackage() {
|
|
45
|
+
try {
|
|
46
|
+
execSync(`npm uninstall -g ${UPSTREAM_GLOBAL_PACKAGE}`, {
|
|
47
|
+
stdio: "inherit",
|
|
48
|
+
});
|
|
49
|
+
return true;
|
|
50
|
+
} catch (err) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function main() {
|
|
56
|
+
const isGlobalInstall = process.env.npm_config_global === "true";
|
|
57
|
+
if (!isGlobalInstall) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (process.env.AG_KIT_SKIP_UPSTREAM_CHECK === "1") {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const deps = readGlobalNpmDependencies();
|
|
66
|
+
if (!deps) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (!Object.prototype.hasOwnProperty.call(deps, UPSTREAM_GLOBAL_PACKAGE)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
console.warn(`\n⚠️ 检测到全局已安装上游英文版 ${UPSTREAM_GLOBAL_PACKAGE}`);
|
|
75
|
+
console.warn("⚠️ 上游英文版与当前中文版共用 `ag-kit` 命令名,后安装者会覆盖命令入口。");
|
|
76
|
+
console.warn("⚠️ 为避免后续混淆,建议仅保留一个来源。\n");
|
|
77
|
+
|
|
78
|
+
if (!canPromptUser()) {
|
|
79
|
+
console.warn("ℹ️ 当前环境不是交互式终端,无法确认是否自动卸载。");
|
|
80
|
+
console.warn(`👉 如需卸载,请手动执行: npm uninstall -g ${UPSTREAM_GLOBAL_PACKAGE}`);
|
|
81
|
+
console.warn("ℹ️ 本次将继续安装;安装完成后由最后安装的版本接管 `ag-kit` 命令。\n");
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const shouldUninstall = await askForUninstallConfirmation();
|
|
86
|
+
|
|
87
|
+
if (!shouldUninstall) {
|
|
88
|
+
console.warn(`ℹ️ 已保留 ${UPSTREAM_GLOBAL_PACKAGE},继续安装当前版本。`);
|
|
89
|
+
console.warn("ℹ️ 结果说明:`ag-kit` 命令由最后安装的包生效。\n");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
console.warn(`\n🧹 正在卸载 ${UPSTREAM_GLOBAL_PACKAGE} ...`);
|
|
94
|
+
const ok = uninstallUpstreamPackage();
|
|
95
|
+
|
|
96
|
+
if (ok) {
|
|
97
|
+
console.warn(`✅ 已卸载 ${UPSTREAM_GLOBAL_PACKAGE},继续安装当前版本。\n`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.warn(`❌ 自动卸载 ${UPSTREAM_GLOBAL_PACKAGE} 失败,将继续安装当前版本。`);
|
|
102
|
+
console.warn("ℹ️ 若需手动处理,请执行:");
|
|
103
|
+
console.warn(` npm uninstall -g ${UPSTREAM_GLOBAL_PACKAGE}`);
|
|
104
|
+
console.warn("ℹ️ 安装完成后,`ag-kit` 命令仍由最后安装的版本生效。\n");
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
main().catch((err) => {
|
|
108
|
+
console.warn("⚠️ postinstall 冲突检测出现异常,已跳过,不影响安装继续。");
|
|
109
|
+
if (err && err.message) {
|
|
110
|
+
console.warn(` ${err.message}`);
|
|
111
|
+
}
|
|
112
|
+
});
|