@givolt/i3-composer-agent 2.3.0 → 2.3.2
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/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-prototype.md +5 -7
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.gemini/commands/i3-prototype.toml +5 -7
- package/README.md +12 -7
- package/bin/i3-composer-agent.cjs +33 -2
- package/bin/install.cjs +14 -0
- package/bin/native-migration.cjs +27 -3
- package/commands/i3-prototype.toml +5 -7
- package/docs/codebuddy-setup.md +65 -2
- package/docs/codex-setup.md +4 -0
- package/docs/other-hosts.md +1 -1
- package/docs/ui-prototype-native/MAIN-SESSION-REPORT.md +66 -0
- package/docs/ui-prototype-native/USAGE.md +91 -0
- package/docs/workbuddy-setup.md +4 -0
- package/evals/cases/i3-frontend-ui-engineering.json +16 -0
- package/evals/cases/i3-ui-prototype.json +109 -0
- package/evals/cases/i3-using-agent-skills.json +28 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +3 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +8 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +67 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/index.html +89 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +52 -0
- package/evals/fixtures/i3-ui-prototype/admin-list/template.json +8 -0
- package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +17 -0
- package/evals/zh-CN/cases/i3-ui-prototype.json +115 -0
- package/evals/zh-CN/cases/i3-using-agent-skills.json +30 -0
- package/package.json +35 -1
- package/plugin.json +1 -1
- package/scripts/design-provider-discovery-test.js +190 -0
- package/scripts/design-provider-test.js +75 -0
- package/scripts/enterprise-template-test.js +67 -1
- package/scripts/lib/prototype-fixture.cjs +17 -0
- package/scripts/prototype-locations-test.js +58 -0
- package/scripts/ui-prototype-content-test.js +123 -0
- package/scripts/ui-prototype-dependencies-test.js +213 -0
- package/scripts/ui-prototype-devtools-test.js +53 -0
- package/scripts/ui-prototype-native-test.js +504 -0
- package/scripts/ui-prototype-template-test.js +261 -0
- package/scripts/ui-prototype-test.js +10 -0
- package/skills/i3-ui-prototype/SKILL.md +142 -23
- package/skills/i3-ui-prototype/assets/capabilities/management.json +294 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +51 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +13 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +11 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +2298 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +22 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +6 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +136 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +111 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +19 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +28 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +50 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +25 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +18 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +50 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +66 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +44 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +26 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +15 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +4 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +174 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +61 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +11 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +2298 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +22 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +21 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +51 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +18 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +25 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +18 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +13 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +26 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +15 -0
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +4 -0
- package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +737 -0
- package/skills/i3-ui-prototype/assets/optional-skills/sources.json +27 -0
- package/skills/i3-ui-prototype/assets/templates/catalog.js +149 -0
- package/skills/i3-ui-prototype/assets/templates/catalog.json +3 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +294 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +3 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +507 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +1 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +265 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +8888 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +9 -0
- package/skills/i3-ui-prototype/assets/templates/gallery/index.html +6 -6
- package/skills/i3-ui-prototype/assets/templates/index.html +3 -0
- package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +7 -0
- package/skills/i3-ui-prototype/references/artifact-contract.md +25 -0
- package/skills/i3-ui-prototype/references/content-template.md +76 -0
- package/skills/i3-ui-prototype/references/enterprise-admin.md +9 -3
- package/skills/i3-ui-prototype/references/entry-contract.md +71 -0
- package/skills/i3-ui-prototype/references/expert-adapter.md +39 -5
- package/skills/i3-ui-prototype/references/framework-contract.md +76 -0
- package/skills/i3-ui-prototype/references/interaction-acceptance.md +165 -0
- package/skills/i3-ui-prototype/references/legacy-native.md +58 -0
- package/skills/i3-ui-prototype/references/optional-skills.md +59 -0
- package/skills/i3-ui-prototype/references/template-adapters.md +1 -1
- package/skills/i3-ui-prototype/references/workflow-contract.md +58 -4
- package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +3 -3
- package/skills/i3-ui-prototype/scripts/content-template.cjs +98 -0
- package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +128 -0
- package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +30 -14
- package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +1 -1
- package/skills/i3-ui-prototype/scripts/native-browser.cjs +785 -0
- package/skills/i3-ui-prototype/scripts/native-build.cjs +91 -0
- package/skills/i3-ui-prototype/scripts/native-delivery.cjs +91 -0
- package/skills/i3-ui-prototype/scripts/native-devtools.cjs +91 -0
- package/skills/i3-ui-prototype/scripts/native-files.cjs +35 -0
- package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +244 -0
- package/skills/i3-ui-prototype/scripts/native-pilot.cjs +34 -0
- package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +203 -0
- package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +81 -0
- package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +50 -26
- package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +65 -0
- package/skills/i3-ui-prototype/scripts/sync-template.cjs +19 -0
- package/skills/i3-ui-prototype/scripts/template-contract.cjs +398 -0
- package/skills/i3-ui-prototype/scripts/validate-result.cjs +117 -0
- package/skills/i3-using-agent-skills/SKILL.md +2 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
3
|
-
# i3-description-source: "description: Create,
|
|
2
|
+
description: "在主会话中分析、创建、检查与迭代 UI 交互原型。"
|
|
3
|
+
# i3-description-source: "description: Create, analyze, inspect and iterate UI prototypes in the main session"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- i3:zh-CN:start -->
|
|
@@ -11,13 +11,11 @@ description: "选择模板并生成、评审和迭代交互原型,维护已确
|
|
|
11
11
|
Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
|
|
12
12
|
严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
适用说明:在主会话中分析、创建、检查与迭代 UI 交互原型。
|
|
15
15
|
<!-- i3:zh-CN:end -->
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Use the i3-ui-prototype skill in the main session for the user's request below. Follow its shared preflight, operation boundaries and applicable runtime workflow.
|
|
18
18
|
|
|
19
19
|
$ARGUMENTS
|
|
20
20
|
|
|
21
|
-
With no arguments
|
|
22
|
-
Default to professional enhancement mode. Detect UI/UX Pro Max in the current host; if unavailable, offer installation or explicit template mode. Never silently downgrade.
|
|
23
|
-
Use the skill workflow for template selection, business mapping, professional advice, real browser verification and version-specific human confirmation. Preserve approved snapshots during iteration.
|
|
21
|
+
With no arguments use create; explicit analysis or read-only limits take precedence. Preserve the user's scope, manual edits, fixed inputs and approved baselines. Use supporting engineering, framework, design and browser skills as the working skill requires; keep its workflow and evidence requirements there.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
description = "
|
|
2
|
-
# i3-description-source: "description = \"Create,
|
|
1
|
+
description = "在主会话中分析、创建、检查与迭代 UI 交互原型。"
|
|
2
|
+
# i3-description-source: "description = \"Create, analyze, inspect and iterate UI prototypes in the main session\""
|
|
3
3
|
|
|
4
4
|
prompt = """
|
|
5
5
|
<!-- i3:zh-CN:start -->
|
|
@@ -10,14 +10,12 @@ prompt = """
|
|
|
10
10
|
Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
|
|
11
11
|
严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
适用说明:在主会话中分析、创建、检查与迭代 UI 交互原型。
|
|
14
14
|
<!-- i3:zh-CN:end -->
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Use the i3-ui-prototype skill in the main session for the user's request below. Follow its shared preflight, operation boundaries and applicable runtime workflow.
|
|
17
17
|
|
|
18
18
|
$ARGUMENTS
|
|
19
19
|
|
|
20
|
-
With no arguments
|
|
21
|
-
Default to professional enhancement mode. Detect UI/UX Pro Max in the current host; if unavailable, offer installation or explicit template mode. Never silently downgrade.
|
|
22
|
-
Use the skill workflow for template selection, business mapping, professional advice, real browser verification and version-specific human confirmation. Preserve approved snapshots during iteration.
|
|
20
|
+
With no arguments use create; explicit analysis or read-only limits take precedence. Preserve the user's scope, manual edits, fixed inputs and approved baselines. Use supporting engineering, framework, design and browser skills as the working skill requires; keep its workflow and evidence requirements there.
|
|
23
21
|
"""
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# i3 Composer Agent v2.3.
|
|
1
|
+
# i3 Composer Agent v2.3.2
|
|
2
2
|
|
|
3
3
|
**Intelligence. Integration. Innovation.**
|
|
4
4
|
|
|
@@ -161,7 +161,7 @@ CodeBuddy、WorkBuddy、Claude Code 原生安装使用 `/i3-spec`、`/i3-plan`
|
|
|
161
161
|
| /i3-composer-agent:i3-code-simplify | 简化代码,降低复杂度,提高可读性与维护性,并保持既有行为不变。 |
|
|
162
162
|
| /i3-composer-agent:i3-constraints | 访谈并定义项目质量门槛,提供合理默认值,写入 CONSTRAINTS.md 并落实约束。 |
|
|
163
163
|
| /i3-composer-agent:i3-plan | 把工作拆成带验收标准、验证步骤和依赖顺序的小任务。 |
|
|
164
|
-
| /i3-composer-agent:i3-prototype |
|
|
164
|
+
| /i3-composer-agent:i3-prototype | 在主会话中分析、创建、检查与迭代 UI 交互原型。 |
|
|
165
165
|
| /i3-composer-agent:i3-review | 从正确性、可读性、架构、安全和性能五个维度审查代码。 |
|
|
166
166
|
| /i3-composer-agent:i3-ship | 并行调用三个专业角色执行发布前检查,主会话汇总 GO/NO-GO 决策与回滚计划。 |
|
|
167
167
|
| /i3-composer-agent:i3-spec | 先编写结构化规格、目标、范围与验收标准,再进入实现。 |
|
|
@@ -176,10 +176,15 @@ CodeBuddy、WorkBuddy、Claude Code 原生安装使用 `/i3-spec`、`/i3-plan`
|
|
|
176
176
|
由主会话汇总 GO/NO-GO 决策,回滚计划必需。代码审查使用 Critical、Required、Optional、Nit
|
|
177
177
|
四级;Critical 和 Required 问题默认阻止发布,各专业角色仍保留自己的报告字段和判断规则。
|
|
178
178
|
|
|
179
|
-
`/i3-prototype`
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
179
|
+
`/i3-prototype` 在主会话调用 `i3-ui-prototype` 技能,按需求使用前端与浏览器技能完成原型。
|
|
180
|
+
完整企业后台 HTML 内容模板可双击 index.html 离线查看与修改;生成的 Vue 3+antDv-next 工程
|
|
181
|
+
使用真实组件,支持明亮、暗黑、清新、科技四主题,默认明亮。已有原型按原合同继续使用。
|
|
182
|
+
模板在 Skill 源码中维护并随版本发布,生成时只读引用;业务直接修改原型工程,不默认创建项目 ui-templates。
|
|
183
|
+
UI/UX Pro Max 与 antDv 官方 Skill 可通过 `--prototype-skills uiux,antdv` 明确选择安装,
|
|
184
|
+
也可稍后检测/补装;工具随所选宿主和范围存入 `tools/i3-prototype/`,旧路径继续兼容。
|
|
185
|
+
默认采用专业增强模式,UIUX 不可用时提示修复或由用户明确选择模板模式继续。
|
|
186
|
+
两项外部能力不计入本包技能数量。AI 工作台、数字孪生大屏和移动端模板仍在规划中。
|
|
187
|
+
每个生成原型仍需独立的交互验收和用户评审;本包尚未实现企业 SOP 自动编排。
|
|
183
188
|
|
|
184
189
|
## Skills
|
|
185
190
|
|
|
@@ -209,7 +214,7 @@ UI/UX Pro Max 是需要单独安装的外部设计能力,不计入本包的技
|
|
|
209
214
|
| [i3-source-driven-development](skills/i3-source-driven-development/SKILL.md) | 以官方文档和权威来源支撑实现决策。适用于核对框架/库用法、验证方案、查证 API 和避免过时实现,并保留来源证据。 |
|
|
210
215
|
| [i3-spec-driven-development](skills/i3-spec-driven-development/SKILL.md) | 在实现前形成结构化规格。适用于新项目、功能或重大改动、PRD、需求澄清、目标与范围、场景和验收标准,以及将需求拆为独立可测试能力。 |
|
|
211
216
|
| [i3-test-driven-development](skills/i3-test-driven-development/SKILL.md) | 执行测试先行的红绿重构循环。适用于实现逻辑、修复缺陷、修改行为、复现报错及证明改动有效;也用于为函数补测试、修复或修改直接粘贴的代码,即使请求未提到测试;缺陷修复使用先证明失败的 Prove-It 模式。 |
|
|
212
|
-
| [i3-ui-prototype](skills/i3-ui-prototype/SKILL.md) |
|
|
217
|
+
| [i3-ui-prototype](skills/i3-ui-prototype/SKILL.md) | 将 HTML 内容模板、业务需求与目标组件框架组合为可操作 UI 原型。适用于原型分析、原型候选生成、原型交互验证和已确认原型基线维护;生产页面实现使用工程流程。 |
|
|
213
218
|
| [i3-using-agent-skills](skills/i3-using-agent-skills/SKILL.md) | 发现并调用合适的工程技能。适用于开始会话、判断任务意图、选择技能或工作流;作为元技能协调其他技能的发现和调用。 |
|
|
214
219
|
|
|
215
220
|
## Agent 角色
|
|
@@ -21,6 +21,9 @@ ${pkg.name}
|
|
|
21
21
|
npx ${pkg.name} --workbuddy --scope global
|
|
22
22
|
npx ${pkg.name} --agents codebuddy,workbuddy --scope global --yes
|
|
23
23
|
npx ${pkg.name} --agents codebuddy,codex --scope project --yes
|
|
24
|
+
npx ${pkg.name} --codebuddy --scope project --yes --prototype-skills uiux,antdv
|
|
25
|
+
npx ${pkg.name} prototype-deps check --host codex --scope project --project <project>
|
|
26
|
+
npx ${pkg.name} prototype-deps install --host workbuddy --scope global --skills uiux,antdv
|
|
24
27
|
npx ${pkg.name} --prepare --claude --dir <directory>
|
|
25
28
|
npx ${pkg.name} --extract --dir <directory>
|
|
26
29
|
|
|
@@ -32,6 +35,8 @@ ${pkg.name}
|
|
|
32
35
|
--claude 预选 Claude Code
|
|
33
36
|
--scope <scope> project 项目 / global 全局(也可 --global / --local)
|
|
34
37
|
--project-dir <dir> 项目安装根目录,默认当前目录
|
|
38
|
+
--prototype-skills <ids> 可选原型依赖:none(默认)、uiux、antdv、uiux,antdv;跟随所选宿主和范围
|
|
39
|
+
--migrate-tools 显式迁移有 i3 来源记录的旧独立 antDv 工具;仅项目范围且需选择 antdv
|
|
35
40
|
--yes 确认明确指定的非交互安装
|
|
36
41
|
--list-agents 列出全部支持的工具目录
|
|
37
42
|
--prepare 另行导出插件目录并显示宿主注册步骤
|
|
@@ -154,6 +159,11 @@ function prepare() {
|
|
|
154
159
|
async function main() {
|
|
155
160
|
if (args.includes('--help') || (!args.length && !process.stdin.isTTY)) { console.log(help); return; }
|
|
156
161
|
if (args.length === 1 && args[0] === '--version') { console.log(pkg.version); return; }
|
|
162
|
+
if (args[0] === 'prototype-deps') {
|
|
163
|
+
const dependencies = require('../skills/i3-ui-prototype/scripts/prototype-dependencies.cjs');
|
|
164
|
+
console.log(JSON.stringify(await dependencies.main(args.slice(1)), null, 2));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
157
167
|
if (args.some(arg => ['--extract', '--prepare', '--dir'].includes(arg))) { prepare(); return; }
|
|
158
168
|
const installer = require('./install.cjs');
|
|
159
169
|
if (args.length === 1 && args[0] === '--list-agents') {
|
|
@@ -164,11 +174,15 @@ async function main() {
|
|
|
164
174
|
for (let i = 0; i < args.length; i++) {
|
|
165
175
|
const arg = args[i];
|
|
166
176
|
if (['--codebuddy', '--workbuddy', '--codex', '--claude'].includes(arg)) options.agents.push(arg.slice(2));
|
|
167
|
-
else if (['--agents', '--scope', '--project-dir'].includes(arg)) {
|
|
177
|
+
else if (['--agents', '--scope', '--project-dir', '--prototype-skills'].includes(arg)) {
|
|
168
178
|
if (!args[i + 1] || args[i + 1].startsWith('--')) throw new Error(`${arg} 需要指定值。`);
|
|
169
179
|
const value = args[++i];
|
|
170
180
|
if (arg === '--agents') options.agents.push(value);
|
|
171
181
|
else if (arg === '--scope') { if (options.scope && options.scope !== value) throw new Error('请选择一个安装范围。'); options.scope = value; }
|
|
182
|
+
else if (arg === '--prototype-skills') {
|
|
183
|
+
require('../skills/i3-ui-prototype/scripts/optional-skill-install.cjs').selection(value);
|
|
184
|
+
options.prototypeSkills = value;
|
|
185
|
+
}
|
|
172
186
|
else options.projectDir = path.resolve(value);
|
|
173
187
|
} else if (arg === '--global' || arg === '--local') {
|
|
174
188
|
const scope = arg === '--global' ? 'global' : 'project';
|
|
@@ -177,6 +191,7 @@ async function main() {
|
|
|
177
191
|
} else if (arg === '--yes') options.yes = true;
|
|
178
192
|
else if (arg === '--force') options.force = true;
|
|
179
193
|
else if (arg === '--dry-run') options.dryRun = true;
|
|
194
|
+
else if (arg === '--migrate-tools') options.migrateTools = true;
|
|
180
195
|
else throw new Error(`未知选项: ${arg}`);
|
|
181
196
|
}
|
|
182
197
|
options.agents = installer.selectAgents(options.agents);
|
|
@@ -187,9 +202,11 @@ async function main() {
|
|
|
187
202
|
} else if (!options.agents.length || !options.scope || (!options.yes && !options.dryRun)) {
|
|
188
203
|
throw new Error('请在交互终端使用向导,或明确指定 --agents <ids> --scope project|global --yes。');
|
|
189
204
|
}
|
|
205
|
+
if (options.migrateTools && (options.scope !== 'project' || !options.prototypeSkills?.split(',').includes('antdv'))) throw new Error('--migrate-tools requires project scope and selected antdv');
|
|
190
206
|
const plan = installer.planInstallation(options);
|
|
191
207
|
if (options.dryRun) {
|
|
192
|
-
console.log(JSON.stringify({ name, version: pkg.version, mode: plan.mode, scope: plan.scope, agents: plan.agents, targets: plan.targets, conflicts: plan.conflicts, reused: plan.reused
|
|
208
|
+
console.log(JSON.stringify({ name, version: pkg.version, mode: plan.mode, scope: plan.scope, agents: plan.agents, targets: plan.targets, conflicts: plan.conflicts, reused: plan.reused,
|
|
209
|
+
...(options.prototypeSkills !== undefined ? { optionalPrototypeSkills: options.prototypeSkills, migrateTools: !!options.migrateTools } : {}) }, null, 2));
|
|
193
210
|
return;
|
|
194
211
|
}
|
|
195
212
|
if (!options.yes) {
|
|
@@ -213,5 +230,19 @@ async function main() {
|
|
|
213
230
|
console.log('请重新加载 IDE 窗口或新建宿主会话以发现安装内容。');
|
|
214
231
|
if (plan.agents.some(id => !['codebuddy', 'workbuddy', 'claude-code'].includes(id))) console.log('这些工具通过技能 ID 调用;生命周期短命令支持取决于宿主。');
|
|
215
232
|
console.log('安装完成。评测说明见 i3-composer-agent/evals/README.md;Hook 需按宿主事件协议启用。');
|
|
233
|
+
if (options.prototypeSkills !== undefined && options.prototypeSkills !== 'none') {
|
|
234
|
+
try {
|
|
235
|
+
// Shared project targets (for example CodeBuddy + WorkBuddy) prepare once.
|
|
236
|
+
for (const target of plan.targets) {
|
|
237
|
+
const result = await require('../skills/i3-ui-prototype/scripts/optional-skill-install.cjs').install({ project: options.projectDir,
|
|
238
|
+
host: target.agents[0], scope: plan.scope, skills: options.prototypeSkills, migrateTools: !!options.migrateTools });
|
|
239
|
+
console.log(JSON.stringify({ optionalPrototypeDependencies: result }, null, 2));
|
|
240
|
+
}
|
|
241
|
+
} catch (error) {
|
|
242
|
+
throw new Error(`i3 核心已安装成功;可选原型依赖未完成,可稍后用 prototype-deps install 重试。${error.message}`);
|
|
243
|
+
}
|
|
244
|
+
} else {
|
|
245
|
+
console.log('UIUX / antDv 独立依赖未自动安装。可随时用 prototype-deps check 检测,或 prototype-deps install --skills uiux,antdv 按需准备。');
|
|
246
|
+
}
|
|
216
247
|
}
|
|
217
248
|
main().catch(error => { console.error(`${name}: ${error.message}`); process.exitCode = 1; });
|
package/bin/install.cjs
CHANGED
|
@@ -98,6 +98,7 @@ function planInstallation({ agents, scope, projectDir = process.cwd(), home = os
|
|
|
98
98
|
const additions = nativeAssets(root, target, pluginFiles, version);
|
|
99
99
|
const current = new Set(additions.map(asset => asset.relative));
|
|
100
100
|
assets.push(...additions, ...migrationAssets(target, owned ? previous : undefined, current));
|
|
101
|
+
target.retiredEntryRuleAbsent = target.agents.includes('codebuddy') && !exists(path.join(target.base, 'rules/i3-prototype-entry.md'));
|
|
101
102
|
for (const asset of additions) {
|
|
102
103
|
// A new grouped resource must not take ownership of an unrelated file,
|
|
103
104
|
// even when --force confirms replacement of a previous installation.
|
|
@@ -147,7 +148,14 @@ function executeInstallation(plan, { force = false } = {}) {
|
|
|
147
148
|
fs.mkdirSync(directory);
|
|
148
149
|
createdDirectories.push(directory);
|
|
149
150
|
}
|
|
151
|
+
function checkRetiredEntryRules() {
|
|
152
|
+
for (const target of plan.targets) {
|
|
153
|
+
const file = path.join(target.base, 'rules/i3-prototype-entry.md');
|
|
154
|
+
if (target.retiredEntryRuleAbsent && exists(file)) throw new Error(`安装期间出现未归属的旧原型入口,保留文件并停止安装:${file}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
150
157
|
try {
|
|
158
|
+
checkRetiredEntryRules();
|
|
151
159
|
// Stage every target before replacing the first installed asset.
|
|
152
160
|
for (const [index, asset] of plan.assets.entries()) {
|
|
153
161
|
if (!contexts.has(asset.base)) {
|
|
@@ -176,6 +184,9 @@ function executeInstallation(plan, { force = false } = {}) {
|
|
|
176
184
|
}
|
|
177
185
|
if (asset.kind === 'result' && fingerprint(asset.source) !== asset.expectedFingerprint) throw new Error(`安装期间评测结果已改变:${asset.source}`);
|
|
178
186
|
if (asset.kind === 'result' && asset.existing && fingerprint(asset.destination) !== asset.expectedFingerprint) throw new Error(`安装期间目标评测结果已改变:${asset.destination}`);
|
|
187
|
+
if (asset.retiredFingerprint && fingerprint(asset.destination) !== asset.retiredFingerprint) {
|
|
188
|
+
throw new Error(`安装期间旧原型入口已改变,保留文件并停止自动退出:${asset.destination}`);
|
|
189
|
+
}
|
|
179
190
|
if (asset.reusable) {
|
|
180
191
|
const unchanged = fingerprint(asset.destination) === asset.expectedFingerprint
|
|
181
192
|
&& fingerprint(asset.staged) === asset.expectedFingerprint;
|
|
@@ -198,6 +209,7 @@ function executeInstallation(plan, { force = false } = {}) {
|
|
|
198
209
|
change.written = true;
|
|
199
210
|
}
|
|
200
211
|
}
|
|
212
|
+
checkRetiredEntryRules();
|
|
201
213
|
pruneRetiredDirectories(plan.assets);
|
|
202
214
|
completed = true;
|
|
203
215
|
const ownedPaths = new Set(plan.assets.filter(asset => asset.kind !== 'legacy').map(asset => asset.destination));
|
|
@@ -213,6 +225,8 @@ function executeInstallation(plan, { force = false } = {}) {
|
|
|
213
225
|
for (const target of plan.targets) {
|
|
214
226
|
findUserFiles(path.join(target.base, name));
|
|
215
227
|
for (const category of ['references', 'evals', 'hooks', 'scripts', 'docs']) findUserFiles(path.join(target.base, category, name));
|
|
228
|
+
const userPrototypeAgent = path.join(target.base, 'agents', 'prototype-specialist.md');
|
|
229
|
+
if (exists(userPrototypeAgent) && !ownedPaths.has(userPrototypeAgent)) plan.preserved.push(userPrototypeAgent);
|
|
216
230
|
}
|
|
217
231
|
return [];
|
|
218
232
|
} catch (error) {
|
package/bin/native-migration.cjs
CHANGED
|
@@ -6,6 +6,13 @@ const { fingerprint } = require('./asset-fingerprint.cjs');
|
|
|
6
6
|
const inventory = require('./legacy-native-files.json').files;
|
|
7
7
|
const name = 'i3-composer-agent';
|
|
8
8
|
const publishedFiles = new Set(inventory);
|
|
9
|
+
// Reviewed native bytes from the 99b5eae / 521c958 pilot package. Earlier or
|
|
10
|
+
// edited variants have no reliable content record in layout-3 manifests, so
|
|
11
|
+
// they require manual handling rather than trusting a path-only ownership claim.
|
|
12
|
+
const retiredPrototypeAssets = {
|
|
13
|
+
'rules/i3-prototype-entry.md': '1c89ad58619968e1826cab31b9f6de29ac04d5fc5b8b1c2a2e1a1b64ec9449af',
|
|
14
|
+
'agents/prototype-specialist.md': '4d1aa1c6c913694e8a1c7d3373245377899f9cf3f08ec410b40814fa7cda541f',
|
|
15
|
+
};
|
|
9
16
|
|
|
10
17
|
function ownsAsset(previous, relative) {
|
|
11
18
|
return previous.assets.some(file => file === relative
|
|
@@ -15,7 +22,8 @@ function ownsAsset(previous, relative) {
|
|
|
15
22
|
function allowed(relative) {
|
|
16
23
|
return typeof relative === 'string' && !relative.includes('\0') && !relative.includes(':') && !relative.includes('\\')
|
|
17
24
|
&& !relative.split('/').some(part => ['', '.', '..'].includes(part))
|
|
18
|
-
&& (
|
|
25
|
+
&& (relative === 'rules/i3-prototype-entry.md'
|
|
26
|
+
|| /^(skills|commands|agents|references|evals|hooks|scripts|docs)\//.test(relative)
|
|
19
27
|
|| relative.startsWith(`${name}/`) || [`${name}-LICENSE`, `${name}-NOTICE.md`].includes(relative));
|
|
20
28
|
}
|
|
21
29
|
|
|
@@ -31,17 +39,33 @@ function fileAt(base, relative) {
|
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
function migrationAssets(target, previous, current) {
|
|
34
|
-
if (!previous) return [];
|
|
35
42
|
const assets = [];
|
|
36
43
|
const oldFiles = new Set();
|
|
37
44
|
const retired = new Set();
|
|
38
45
|
const base = target.base;
|
|
46
|
+
for (const [relative, expectedFingerprint] of Object.entries(retiredPrototypeAssets)) {
|
|
47
|
+
if (current.has(relative)) continue;
|
|
48
|
+
const file = fileAt(base, relative);
|
|
49
|
+
let present;
|
|
50
|
+
try { present = fs.lstatSync(path.join(base, relative)); }
|
|
51
|
+
catch (error) { if (error.code === 'ENOENT') continue; throw error; }
|
|
52
|
+
const owned = previous?.assets.includes(relative);
|
|
53
|
+
// Keep the existing protection for unowned CodeBuddy rules. A user-created
|
|
54
|
+
// Agent with this name is outside our catalog and must not be claimed.
|
|
55
|
+
if (!owned && relative.startsWith('agents/')) continue;
|
|
56
|
+
if (!owned && !target.agents?.includes('codebuddy')) continue;
|
|
57
|
+
if (!owned || !file || !present.isFile() || fingerprint(file) !== expectedFingerprint) {
|
|
58
|
+
throw new Error(`保留了已修改、未知或未归属本包的旧原型入口,不能自动退出;请先检查并手动处理后重试:${path.join(base, relative)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!previous) return [];
|
|
39
62
|
function retire(relative) {
|
|
40
63
|
if (retired.has(relative) || current.has(relative)) return;
|
|
41
64
|
const file = fileAt(base, relative);
|
|
42
65
|
if (!file || !fs.statSync(file).isFile()) return;
|
|
43
66
|
retired.add(relative);
|
|
44
|
-
assets.push({ base, destination: file, relative, kind: 'legacy'
|
|
67
|
+
assets.push({ base, destination: file, relative, kind: 'legacy',
|
|
68
|
+
...(retiredPrototypeAssets[relative] ? { retiredFingerprint: retiredPrototypeAssets[relative] } : {}) });
|
|
45
69
|
}
|
|
46
70
|
for (const relative of previous.assets) {
|
|
47
71
|
const file = fileAt(base, relative);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
description = "
|
|
2
|
-
# i3-description-source: "description = \"Create,
|
|
1
|
+
description = "在主会话中分析、创建、检查与迭代 UI 交互原型。"
|
|
2
|
+
# i3-description-source: "description = \"Create, analyze, inspect and iterate UI prototypes in the main session\""
|
|
3
3
|
|
|
4
4
|
prompt = """
|
|
5
5
|
<!-- i3:zh-CN:start -->
|
|
@@ -10,14 +10,12 @@ prompt = """
|
|
|
10
10
|
Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
|
|
11
11
|
严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
适用说明:在主会话中分析、创建、检查与迭代 UI 交互原型。
|
|
14
14
|
<!-- i3:zh-CN:end -->
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Use the i3-ui-prototype skill in the main session for the user's request below. Follow its shared preflight, operation boundaries and applicable runtime workflow.
|
|
17
17
|
|
|
18
18
|
$ARGUMENTS
|
|
19
19
|
|
|
20
|
-
With no arguments
|
|
21
|
-
Default to professional enhancement mode. Detect UI/UX Pro Max in the current host; if unavailable, offer installation or explicit template mode. Never silently downgrade.
|
|
22
|
-
Use the skill workflow for template selection, business mapping, professional advice, real browser verification and version-specific human confirmation. Preserve approved snapshots during iteration.
|
|
20
|
+
With no arguments use create; explicit analysis or read-only limits take precedence. Preserve the user's scope, manual edits, fixed inputs and approved baselines. Use supporting engineering, framework, design and browser skills as the working skill requires; keep its workflow and evidence requirements there.
|
|
23
21
|
"""
|
package/docs/codebuddy-setup.md
CHANGED
|
@@ -9,7 +9,7 @@ npx @givolt/i3-composer-agent --codebuddy
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
向导预选 CodeBuddy,可增加其他工具,再选择项目或全局范围。
|
|
12
|
-
项目安装提供 `.codebuddy/skills/`(26
|
|
12
|
+
项目安装提供 `.codebuddy/skills/`(26 个技能)、
|
|
13
13
|
`commands/`(10 个命令)和 `agents/`(4 个角色)。
|
|
14
14
|
同级 `i3-composer-agent/` 是配套工具根,集中提供 `package.json`、`evals/`、`hooks/`、`scripts/`、`docs/`、`references/` 和校验输入 `adapters/`,
|
|
15
15
|
只有一份实际技能、命令和角色,评测与宿主共用。
|
|
@@ -25,9 +25,10 @@ npx @givolt/i3-composer-agent --codebuddy
|
|
|
25
25
|
/i3-build auto
|
|
26
26
|
/i3-review
|
|
27
27
|
/i3-ship
|
|
28
|
+
/i3-prototype
|
|
28
29
|
```
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
命令保留 `$ARGUMENTS`、原工程规则和审批边界。原型命令由主会话使用 `i3-ui-prototype`,其他命令沿用各自流程。
|
|
31
32
|
发布命令按宿主能力并行审查或顺序降级,主会话汇总并提供回滚计划。
|
|
32
33
|
|
|
33
34
|
```bash
|
|
@@ -39,6 +40,68 @@ CodeBuddy 与 WorkBuddy 项目共用 `.codebuddy/`;同版本追加客户端会
|
|
|
39
40
|
全局目录彼此独立。WorkBuddy 桌面版建议全局安装,详见 [WorkBuddy 说明](workbuddy-setup.md)。
|
|
40
41
|
升级或同名冲突先查看 `--dry-run`,再确认或使用 `--yes --force`。
|
|
41
42
|
|
|
43
|
+
## 原型官方依赖可选安装
|
|
44
|
+
|
|
45
|
+
默认安装仅包含 i3 自身技能,UIUX Pro Max 与 antDv 官方 Skill 可不安装。CodeBuddy 项目安装可明确选择:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @givolt/i3-composer-agent --codebuddy --scope project --yes --prototype-skills uiux,antdv
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
值为 none、uiux、antdv 或 uiux,antdv;默认 none。可选工具跟随宿主和项目/全局范围,位于基址下 `tools/i3-prototype/`;旧项目 `.prototype-tools` 保持读取兼容。需要固定本次版本时使用 `npx @givolt/i3-composer-agent@2.3.2`。已安装后可随时单独检测/补装,无需重装 i3:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
node .codebuddy/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs check --host codebuddy --scope project --project .
|
|
55
|
+
node .codebuddy/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs install --host codebuddy --scope project --project . --skills uiux,antdv
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
检测只读,不下载安装。安装需要网络,固定官方版本并保留原名与来源,已有可用安装复用;已有不可用目录保留并提示修复,不自动覆盖、全局升级或安装 Python。UIUX 专业模式缺项时提示,用户明确选择基础模式后仍可生成并保留同样功能验收;antDv Skill 缺失可按官方版本资料渠道实施。后续安装不改变已有实例模式或旧验收,CodeBuddy 必要时重载窗口/新建会话。目录与检测通过不等于宿主实际调用。
|
|
59
|
+
|
|
60
|
+
## 主会话原型流程与使用入口
|
|
61
|
+
|
|
62
|
+
原型由主会话使用 `.codebuddy/skills/i3-ui-prototype/`,按同一方法完成需求理解、设计、制作、修订与验证。Skill 保存模板、能力、框架和验收规则;按任务需要复用前端工程方法、官方框架知识、UIUX Pro Max 和浏览器测试能力。HTML 是内容参考,生成结果采用真实框架组件。
|
|
63
|
+
|
|
64
|
+
模板编辑、构建、证据登记和后续修改的完整命令见[首期使用与续接](ui-prototype-native/USAGE.md)。
|
|
65
|
+
|
|
66
|
+
自然语言可以这样提出任务:
|
|
67
|
+
|
|
68
|
+
> 根据资产清单需求,参考完整 enterprise-admin 内容模板,用 Vue 3+antDv-next 生成交互原型。保留筛选、多选、分页和编辑抽屉,验证失败重试、开合动效和遮罩模糊。请使用 UIUX Pro Max 优化体验,交付待评审候选。
|
|
69
|
+
|
|
70
|
+
或明确使用命令:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
/i3-prototype analyze 先检查需求与内容模板,不修改任何文件
|
|
74
|
+
/i3-prototype create 参考完整 enterprise-admin 模板,用 Vue 3+antDv-next 生成资产清单原型
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
自然语言、`/i3-prototype`、已加载的 `i3-using-agent-skills` 和直接使用 `i3-ui-prototype` 都进入同一主会话流程。`i3-using-agent-skills` 按普通技能发现选择工作 Skill;命令只提供快捷入口。普通安装不注册原型专责角色,也不安装常驻原型分派规则。命令菜单、Skill 被读取和真实执行分别验证;CodeBuddy IDE 与 CodeBuddy Code CLI 的证据不能互相替代。
|
|
78
|
+
|
|
79
|
+
直接使用方法也是正式入口:说“请当前会话使用 i3-ui-prototype 技能,只读分析这个原型”。主会话交付自然语言分析、候选与真实证据,不以父子 Agent JSON 或回传标记为前置。只读分析不写入;原型基线认可需真实用户认可,后续工程仍按现有规格、计划和实现流程交接。
|
|
80
|
+
|
|
81
|
+
升级只退出清单归属明确且内容匹配已知原型增量的旧角色和旧入口规则。旧入口经过用户修改或来源未知时保留原文件并停止安装,提示人工检查;`--force` 不绕过此保护。同名用户自建 Agent 保留并报告。这样可以在升级前明确处理仍可能生效的旧常驻规则。
|
|
82
|
+
|
|
83
|
+
默认只读使用 Skill 内置模板,模板由维护者在 Skill 源码中修改并随包发布;业务项目不默认生成 ui-templates。生成的真实组件工程在 `prototypes/<id>/app/`,业务修改直接作用于该工程,生成依据固定在 inputs。已有模板副本仅在明确指定 --template-root 时复用并保留手工修改。按实际 PRD 固定页面、区域和适用能力;旧原型按原合同继续读取,不自动迁移。professional 默认使用真实 UIUX 查询;明确选择 template 时仍完成同样功能验收,不声称使用了 UIUX。
|
|
84
|
+
|
|
85
|
+
框架官方 antdv Skill 是独立知识来源,按本次版本和授权接入,不随本包安装而自动全局安装或升级 CLI。首期固定库 1.5.3;已探测的 CLI 0.0.0-beta.1 没有该知识文件,显式回退查询 1.5.2 只能作参考,再核对 1.5.3 包内类型/源码。错误文本或退出码 0、仅打印 Parsed args 的 lint,均不能作为查询或验收通过。
|
|
86
|
+
|
|
87
|
+
工具前置使用依赖检测返回的实际 Node 入口,也兼容已有 `.prototype-tools/node_modules` 布局或宿主明确的绝对入口;缺失时只读分析报告未决项,不以 npm exec/npx 下载或补缓存。工具准备须有明确选择,写范围仅指定工具目录,不含业务内容或 SDK。analyze 只交覆盖、选型、验收计划和缺口,不套用创建阶段的 UIUX 采纳、构建或浏览器门禁。
|
|
88
|
+
|
|
89
|
+
本轮新原生流程还要求执行者真实调用 `i3-browser-testing-with-devtools` Skill,并使用 Chrome DevTools MCP 对当前构建取得 DOM/计算样式、截图、console、network、可访问性和性能观测。只读取 Skill 文件或运行 Playwright 脚本都不等于调用该 Skill;Playwright 保留为原型专项补充。缺可调用 Skill 或 MCP 时整链不 complete,按已授权范围准备宿主工具后再验;analyze 不启动或安装浏览器。具体工具接入以实际宿主暴露为准,不能从其他会话或维护 smoke 推断当前执行环境可用。旧实例按固定合同保留,其他宿主等效结果单列。
|
|
90
|
+
|
|
91
|
+
新完整模板原生流程默认包含明亮、暗黑、清新、科技,首次默认明亮,菜单无编号;生成工程用原生框架主题,验证四预设、刷新记忆、实例隔离及业务状态保留。旧实例继续按原有固定合同,不隐式增加能力;步骤见首期指南。
|
|
92
|
+
|
|
93
|
+
## 原型本地检查与预览
|
|
94
|
+
|
|
95
|
+
以下使用项目安装路径,原型目录替换为实际值。首次构建允许安装依赖时使用 --install;后续复用依赖构建。预览命令持续运行并输出本地 URL。
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
node .codebuddy/skills/i3-ui-prototype/scripts/native-pilot.cjs inspect prototypes/device-list
|
|
99
|
+
node .codebuddy/skills/i3-ui-prototype/scripts/native-pilot.cjs build prototypes/device-list --install
|
|
100
|
+
node .codebuddy/skills/i3-ui-prototype/scripts/native-pilot.cjs preview prototypes/device-list
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
真实浏览器执行场景后,使用 inspect --acceptance 核对当前候选、实际构建和证据引用。检查通过仍待用户评审。只读分析不执行以上写入构建步骤,也不安装、持久化设计或更新原型状态。
|
|
104
|
+
|
|
42
105
|
## 配套检查
|
|
43
106
|
|
|
44
107
|
在业务项目运行 `node .codebuddy/i3-composer-agent/scripts/run-evals.js --min-rank1 95`,
|
package/docs/codex-setup.md
CHANGED
|
@@ -34,3 +34,7 @@ Codex 短命令适配是独立的宿主能力,不影响技能中文化与品
|
|
|
34
34
|
Codex 已有原生技能路由,勿把元技能全文预加载为常驻上下文。
|
|
35
35
|
元技能仍可安装并按需显式调用。CLI 保留已有插件设置;测试本地目录时使用绝对路径。
|
|
36
36
|
文件安装、宿主发现与实际模型工作流分别验证。
|
|
37
|
+
|
|
38
|
+
## 可选原型工具
|
|
39
|
+
|
|
40
|
+
原型辅助工具位于本宿主基址的 `tools/i3-prototype/`,支持项目和全局范围;旧项目 `.prototype-tools` 继续读取兼容。项目安装可使用 `npx @givolt/i3-composer-agent@2.3.2 --codex --scope project --yes --prototype-skills uiux,antdv`;全局安装将 scope 改为 global。可选依赖默认 none,后续也可使用已安装 Skill 的 prototype-dependencies.cjs 单独检测/补装。完整用法见原型 Skill 的 references/optional-skills.md。
|
package/docs/other-hosts.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## 使用本地分发目录
|
|
8
8
|
|
|
9
|
-
以下命令使用完整分发包解压目录里的 CLI,适用于本地测试和离线接入。`/absolute/path/to/package` 均替换为实际解压目录;已发布版本也可使用 `npx @givolt/i3-composer-agent@2.3.
|
|
9
|
+
以下命令使用完整分发包解压目录里的 CLI,适用于本地测试和离线接入。`/absolute/path/to/package` 均替换为实际解压目录;已发布版本也可使用 `npx @givolt/i3-composer-agent@2.3.2` 的对应入口。
|
|
10
10
|
|
|
11
11
|
### fx
|
|
12
12
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# 主会话原型改造验证报告
|
|
2
|
+
|
|
3
|
+
<!-- i3:zh-guide:start -->
|
|
4
|
+
## 中文使用说明
|
|
5
|
+
|
|
6
|
+
按下文完整工程步骤、检查项与验证条件执行。根据任务选择适用步骤,保留证据、风险和退出条件;正文示例中的英文标签在面向用户输出时译为中文。
|
|
7
|
+
|
|
8
|
+
默认使用简体中文解释、追问及生成报告;用户明确要求其他语言时可切换。原方法正文、引用、阈值和审批条件完整保留。代码标识、路径、命令、工具参数、JSON 键/枚举与原文引用保持原样。
|
|
9
|
+
<!-- i3:zh-guide:end -->
|
|
10
|
+
|
|
11
|
+
日期:2026-10-17。源码分支:feature/prototype-native-pilot。首期为CodeBuddy+admin-list小模板+Vue 3/antDv-next设备流程。实施及样例技术验收完成,补充复核后的当前收据已完成;用户视觉/业务评审仍为pending-review。正式main与上游保全基线未变,未合并或发布。
|
|
12
|
+
|
|
13
|
+
## 已完成改造
|
|
14
|
+
|
|
15
|
+
取消prototype-specialist专责Agent、常驻分派规则及父子JSON强制;自然语言、using、/i3-prototype、直接Skill均由主会话执行。using以原版aeac41d4为基线,只增加普通原型分支和Quick Reference行;移除两行后SHA256为30787ef2c77bf1a4729fffed0f6523ba6fcbe81bdc436b36371b78c21394d3c3。三宿主命令格式仍是薄入口,不承担企业调度。
|
|
16
|
+
|
|
17
|
+
企业SOP在外层组织PRD、设计取舍、制作、技术验证、人工认可与工程交接;原型Skill按需复用前端、官方框架、UIUX和浏览器方法。业务/技术规格、任务tracker及正式发布仍依上游方法,不增加企业审批库或专属Agent。
|
|
18
|
+
|
|
19
|
+
HTML继续可离线修改,是内容和能力输入。生成原型采用真实ConfigProvider/Table/Form/Drawer等组件;本次需求明确绑定“明亮、暗黑、清新、科技”,首次默认明亮,页面内切换,不重挂应用或丢失筛选/页码/选择/未保存输入。旧HTML及未绑定主题的固定实例不自动加入主题、不重写摘要。模板内容和最终框架效果分别验证。
|
|
20
|
+
|
|
21
|
+
已有安装按清单归属+已审原字节指纹安全退出旧角色/规则;修改过、来源不明的受管退出资产会阻断,force不绕过;用户文件保留。维护宿主工具不自动成为上游/全局Hook。
|
|
22
|
+
|
|
23
|
+
## 主要实证
|
|
24
|
+
|
|
25
|
+
证据根:工作区artifacts/verification/prototype-main-session-20261017/。
|
|
26
|
+
|
|
27
|
+
| 范围 | 实际结果 | 证据 |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| 源码与分发 | 全回归528/528、零跳过;实际打包/安装各340/340;最终冻结复验以相邻JSON/log为准 | source-final-guidance.*、source-delivery-final.*、candidate-3-*-test.*、delivery-package/ |
|
|
30
|
+
| 退出与升级 | 真实旧tgz→新tgz项目/global角色5→4,用户规则保留;16项迁移保护通过 | installation/real-upgrade-RESULT.json |
|
|
31
|
+
| 离线HTML | 实际断网file://修改、展示、同步提取,3本地请求、0外部请求/console错误,未起服务 | offline-html-check/ |
|
|
32
|
+
| CLI四入口 | 真实Skill调用、完整分析回传,无Agent;734文件前后同一,SDK/工具/缓存未变 | ENTRY-MATRIX.json、probe-*/ |
|
|
33
|
+
| CodeBuddy IDE入口 | 实际识别/展开命令、UseSkill及主会话中文回传,732安装文件比较无异常差异 | ide-command/ |
|
|
34
|
+
| 全新业务冷生成 | 100工具/22MCP,无Agent,processComplete=true;官方/前端/browser Skill及真实UIUX查询/设计/构建;7/7单测、类型与构建通过 | cold-main-session-v2/、cold-v2-preflight.json |
|
|
35
|
+
| 完整原型专项 | 23/23、零console错误/警告,同一candidate/build,含四主题/状态/偏好/隔离、Drawer动效/毛玻璃/焦点、窄屏/键盘和故障对照 | cold-project-v2/prototypes/main-devices/qa/runs/chrome-1792253902290/ |
|
|
36
|
+
| UIUX实际Skill复查 | Skill(ui-ux-pro-max)真实加载,31工具,零文件/缓存变更;采纳/拒绝与效果分别核对,无阻断 | uiux-final-review/ |
|
|
37
|
+
| 真实交互DevTools补录 | 实际browser Skill,44次MCP/51工具,trace含13 click/1 input,六类观测与操作后console/network已保存;48轮上限后无最终模型回复,未算该轮自动完成 | devtools-interaction-supplement/ |
|
|
38
|
+
| 独立输入/焦点诊断 | 实际固定MCP原生Backspace恢复21;空名保存拒绝、错误/焦点/抽屉/列表均正确,console0 | mcp-empty-fill-diagnostic/run-006/ |
|
|
39
|
+
| 审定与交付 | 原始事件审计、修正登记后build/browser/devtoolsReview/delivery均current,nextAction=return-result;passed、pending-review | FINAL-COLD-AUDIT.json、audited-state-final.json、实例qa/delivery.json |
|
|
40
|
+
| 兼容保护 | 337摘要/模式未变、原先REPORT/TASKS字节前缀保留;旧v1/v2固定合同不追随新模板 | protected-current.json |
|
|
41
|
+
|
|
42
|
+
当前原型:main-devices/r001,candidateDigest=793e0a1eee86bad6e9a081548840cc6408aded05347fa8485f050611f71f1954;buildId=b-193a4dfa2f1be867ceb1,buildDigest=193a4dfa2f1be867ceb103690bdc451ceabcbee0ef29875d388fc420c88f637c。
|
|
43
|
+
|
|
44
|
+
## 发现、修复与证据纠正
|
|
45
|
+
|
|
46
|
+
真实冷运行发现原生分页内部隐藏链接仍能获得焦点。中央starter只将page项渲染为不可聚焦span,保留外层LI及鼠标/键盘;新固定快照启用paginationFocusGuard,旧快照缺字段维持原合同。AX普通鼠标可复现、故障负例能失败、修复后的23项与零候选warning均有实证。
|
|
47
|
+
|
|
48
|
+
CodeBuddy2.168.2初层fill参数scalar与后层完整对象换ID格式,维护宿主已做极窄兼容(固定managed1.11.0、非只读、精确PreToolUse和fill),19/19及独立审查通过,实际新补录也无auditDenied。不能据此建立通用跨层deny绑定保证;实际文件边界另由OS策略及差异证明,不扩大写目录,不改上游Hook/全局配置。
|
|
49
|
+
|
|
50
|
+
独立审计发现初版模型报告的时区错误、调用ID占位、MCP网络摘要和冷缓存措辞不实,性能trace只覆盖reload。原始字节与原最终回复保留,未接受其自评结论。当前报告从真实UTC/call_*生成;MCP仅确认URL/状态,真实响应字节SHA来自独立Playwright观测。UIUX原生成有provider查询但没有Skill调用,真实Skill复查由后续只读阶段完成,不改写历史。
|
|
51
|
+
|
|
52
|
+
补录的完整五分钟交互trace解压70,406,491字节,登记器64MiB边界正确拒绝。原件未改;以明确标注来源、摘要和窗口的前120秒连续原事件导出登记(34,338,470字节、7 click/1 input),不改上限、不筛事件类别、不宣称该片段就是完整录制。索引在实例qa/devtools/audited/trace-excerpt-index.json。
|
|
53
|
+
|
|
54
|
+
另独立复现固定MCP1.11.0的空fill直接清DOM而未发input/change:查询/校验仍读旧绑定。正常键盘/Playwright为空可正确工作。真实MCP以当前文本和末尾光标为准逐次Backspace验证通过;Meta+A/Control+A未全选、空格可能追加旧值等失败保留。自有Skill已补实测指引,上游浏览器Skill/MCP/组件库不改。该工具事件问题与宿主scalar参数兼容分别记录。诊断run-004在抛弃的独立profile中误做一次非空保存已披露;通过run-006无成功保存,应用文件、共享模型profile、旧QA均未变。
|
|
55
|
+
|
|
56
|
+
第一次源码/机械浏览器失败、第一次冷生成120轮未完、维护者误期待revise自动刷新快照而停止的阶段、补录48轮上限、客户端参数/解析错误、64MiB拒绝均保留。revise只接受已整理输入摘要,不自动迁移framework;旧实例未手补新字段。
|
|
57
|
+
|
|
58
|
+
## 结论边界
|
|
59
|
+
|
|
60
|
+
首期样例经过实际主会话制作、专项回归及补充复核后具备待评审交付条件。不能扩展为所有模型/宿主/页面或单轮无人复核都可靠。短种子未触发长文本ellipsis的专门视觉用例,未声称该效果已经实测。技术验证不代替人类认可,不执行confirm-baseline。
|
|
61
|
+
|
|
62
|
+
四CLI入口和IDE入口来自C1;C2的using/三命令字节相同,C2完成新业务冷生成。其后仅自有输入事件指引与维护文档修订;最终包与C2实现/模板/框架/浏览器执行器/入口的字节比较、精确包摘要和最终打包/安装结果以delivery-package/及FINAL-PACKAGE.json为准,不冒认最终说明版本另跑了一次完整冷生成。
|
|
63
|
+
|
|
64
|
+
只读CLI的工具限制、OS写保护及零缓存结论不外推到任意IDE/全工具配置;IDE实际界面请求保留无害残留前缀,项目根重定位只归一确切安装路径,不对用户级会话日志宣称零写入。可写冷生成使用独立npm缓存产生正常依赖缓存/日志;SDK与固定工具未改。
|
|
65
|
+
|
|
66
|
+
本次改造提交保留在试点分支,未安装覆盖用户现有全局环境、未合并、未发布。最终可预览当前候选,仍需用户针对明确revision/digest进行业务和视觉评审。
|