Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

skill 入口 SKILL.md 与 evals/project-setup.json 仍在教/评分「加 @source 扫 ObjectUI 包」—— #4858 修正后的残留 #4865

Closed

Description

@yinlianghui

发现来源

objectui#4858 的实施(分支 claude/issue-4858-skill-source-glob)。#4858 的文件面是三份指南
(skills/objectui/rules/styling.md、guides/page-builder.md、guides/project-setup.md),
已改为教发布态 @import '@object-ui/components/style.css' + @import '@object-ui/fields/style.css'。
同一段样板的残留还在另外两个文件里,按「相邻缺陷立新单不扩围」单独记录,未在 #4858 的 PR 里改。

事实(实测,origin/main = 7458a418b)

1. skills/objectui/SKILL.md:139-140 —— skill 入口的「Common Mistakes」

- Missing Shadcn CSS variables — components render but look completely unstyled.
- Forgetting `@source` directives in Tailwind config — utility classes not generated for ObjectUI packages.

对已发布消费者这条今天是反向指路:@object-ui/components / layout / react 的 files
只含 dist,加 @source 指向它们生成不出主题化 utility(@theme 块在未发布的源码里),正路是导入
两张 style.css。packages/components/README.md:64 与 content/docs/guide/theming.md:82 都明确
写着不要加这条 @source。SKILL.md 是 skill 的入口面,三份子指南改对之后,入口仍指旧路。

(在 monorepo 工作区里 @source 扫 packages/*/src 仍然正确 —— 这条 bullet 的问题是不区分两种场景,
而不是全错。page-builder.md 的同名 bullet 已在 #4858 的 PR 里改成按场景表述。)

2. skills/objectui/evals/project-setup.json —— 评分断言要求复现被删的样板

三条 eval 的 must_contain 仍把旧样板当正确答案:

eval must_contain
1(全套 setup) @source、@theme
2(组件完全无样式,怎么办) @source、@theme、--color-、:root
3(加 grid/kanban 插件) @source

eval 2 的 expected_output 写的是「explains need for @source directives, @theme color token mapping,
and :root CSS variables」—— 这正是 #4858 判定为对 3/4 的包已失效的那段。改对后的指南给出的答案会
不含 @source / @theme / :root(发布态消费者只导两张 style.css),因此按现有断言评分会判负。

影响分级(两半不同,故请 PM 分诊)

  • SKILL.md 那半是具体缺陷:入口面被每个用该 skill 的 agent 读到,今天就会把人导向已失效的做法。
  • evals 那半是 unexercised drift:仓内没有任何 harness 读 skills/objectui/evals/*.json
    (grep 全仓无消费者),所以今天不影响任何门;但它是个评分面,方向与指南相反,谁接上 harness
    谁就会按旧样板打分。

建议修法

  1. SKILL.md:140 改成按场景表述(已发布 → 两张 style.css;工作区 → packages/*/src 的 @source),
    或直接指向 rules/styling.md 的那一节,避免入口与子指南各存一份说法。
  2. evals 1/2 的 must_contain 与 expected_output 跟着改为 style.css 正路;eval 3 的 @source
    需要单独判别(插件在工作区里确实靠 @source,在已发布场景靠插件包自己的样式入口 —— 这一条值得
    先确认插件包是否发布 style.css,再定断言)。

关联:#4858(本单来源,三份指南的修正)、#4059(style.css 为何必须存在)、#4856 / #4851
(files 含 src 的同族)。未认领。

Activity

  1. added theissue type on Aug 17, 2026
  2. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    Contributor

    Triage: pm:queue, type Bug — concrete residue with named files and a measured wrong-direction entry face (skills/objectui/SKILL.md:139-140 misdirects every published-consumer agent today; the evals half is unexercised drift but scores the opposite of the corrected guides). One card, one PR, both files.

    ⚠️ For the reviewing seat: the diff lands entirely under the skills/** root ⇒ on ACCEPT this takes the awaiting-human-merge path (skills updates are ADR-class; review on the issue, leave the PR visibly unmerged for the maintainer, list it in the round report).

    Dispatch note: eval 3's @source assertion needs the plugin-package style.css question answered from the tree before rewriting it, as the card says — that check is part of the card's scope, not a new card.

    Size/model suggestion: S–M, opus.


    Generated by Claude Code

  3. self-assigned this
    on Aug 17, 2026
  4. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    认领(objectui 车道分片 PM,会话 session_01GTRjn8xBqp75dk7kFupVRt,批次 17):branch claude/issue-4865-skill-entry-residue。

    按今晨分诊 scope 实施:skills/objectui/SKILL.md:139-140 入口误导 + evals 反向计分,一单一 PR 两文件;eval 3 的 @source 断言改写前先从树上回答 plugin-package style.css 问题(卡面 scope 内)。

    ⚠️ 验收路径特别注记:diff 全落 skills/**(ADR 类)—— 本单 ACCEPT 后不走 auto-merge,PR 保持可见未合并状态待维护者亲自合并,验收结论落在本 issue,轮次报告列出。


    Generated by Claude Code

  5. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    实施完成 —— draft PR #4930(claude/issue-4865-skill-entry-residue,2 files / +23 −17)。前提复验通过:两文件现状与卡面逐字一致,skills/objectui/rules/styling.md 的顶端提交就是 5d7a655f6 … (#4866),残留确实只剩这两处。

    卡面要求的前置查证(plugin-package style.css),结论:插件包不发布 style.css,也根本不产出任何 CSS。

    • 全部 40 个 packages/*/package.json 里,声明 "./style.css": "./dist/index.css" 的只有 @object-ui/components 与 @object-ui/fields;没有任何 @object-ui/plugin-* 有这个导出。
    • scripts.build:components / fields 是 … && node scripts/build-css.mjs(把 src/index.css 编成 dist/index.css 的那一步),plugin-grid / plugin-kanban 是裸 vite build;两个插件包 src 下一个 .css 文件都没有。

    所以 eval 3 的正确答案形状 = 注册靠 pnpm add + 入口 side-effect import(填 ComponentRegistry);样式那半没有第三张表可导,工作区里靠 app 自己的 Tailwind 入口逐个插件包加 @source 扫 src(apps/console/src/index.css 是参照)。断言据此改写,并把 node_modules/@object-ui(旧样板特征串)与 @object-ui/plugin-grid/style.css(不存在的导出)放进 must_not_contain,使「旧做法不再得分、新做法得分」两个方向都成立。

    同一查证量出的相邻缺陷已另立卡 #4929,本 PR 未碰:两张已发布表按构造只扫各自的包(components/src/index.css:14 是 @source '../src/**',fields/src/index.css:43 是 @source './**'),逐字面 grep 量到 21 个主题化 utility 被 plugin-grid / plugin-kanban 源码使用而两张表零覆盖 —— 发布态消费者渲染 grid / kanban 时它们没有来源。补法(插件各发减法表 / 并进 components / 只补文档)是公开契约取舍,已列三选项交维护者。eval 3 因此只写到工作区那一半为止,不在评分面上现造契约。

    CI:18 个 check 全部完成,16 success + 2 skipped,零失败(Skill Guide Path Check / Control Byte Scan / Changeset Declaration / Type Check / 四个 test shard 均绿)。本地另跑 pnpm exec turbo run type-check --concurrency=2 = 81 successful, 81 total。changeset 不需要 —— check-changeset-presence 判定「No source of a released package changed in this range」,与前序纯 skills/** 的 PR #4866 一致。

    按分诊注记,PR 保持 draft 且未合并,等维护者亲手合。


    Generated by Claude Code

  6. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    PM 验收:ACCEPT —— PR #4930 走 awaiting-human-merge 路径(#4865,批次 17,PM 会话 session_01GTRjn8xBqp75dk7kFupVRt)

    实物核验(已过):恰两文件全在 skills/**(SKILL.md +2/−2、evals +21/−15);标识 0;releases 0。

    style.css 查证(卡面 scope 内前置,四路证据):插件包不发布 style.css 且根本不产 CSS —— 40 包 exports 普查仅 components/fields 声明该导出;插件包构建无 build-css 步;插件 src 零 .css;files 不含源码。评分面正确答案形状由此确立:注册靠 side-effect import,样式在 workspace 内靠 app 自己的 Tailwind 入口逐插件 @source 扫 src(console 参照);发布态插件样式今天在树上无答案 —— 未写进评分面而是立 #4929 交维护者,划界正确。

    对偶证据(文档/评分类的正向判据):旧样板答法改前 eval 1/2/3 全过、改后全不过;修正后指南答法反转 —— 「旧做法不再得分」两半齐;must_not_contain 选 node_modules/@object-ui 而非 @source/@theme 的理由(后两者出现在最佳答案的解释散文里,负向断言会罚掉最好的答案)是评分面设计的关键判断,正确。

    有据偏离(全部接受):eval 1/2/3 三条全改(卡面正文表格本就列了三条,只改 eval 3 会留一半反向计分)、SKILL.md 第 139 行同改(两行并列同组诊断,分开改留自相矛盾入口)、新增 must_not_contain(无负向断言则对偶不成立)—— 三条全部从卡的验收面推出,零新判断。

    CI(亲读终态):18 项全 completed,16 success + 2 skipped,零失败(Skill Guide Path Check 含在内)。

    处置(按分诊注记的 ADR 类路径):PR #4930 已转 ready(便于合并)但 ⛔ 不挂 auto-merge —— skills 更新属 ADR 类,留待维护者亲手合并;本评论即验收结论,轮次报告将列出此单。Fixes #4865 在 PR 正文,合并即关卡。

    附带产出:#4929(发布态插件样式路径缺口,三选项公开契约取舍)已由 PM 转入决策箱。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions