Skip to content

Commit 77ce3d4

Browse files
docs(agents): name a new package by its kind and freeze the plugin- prefix at its ten (#29717)
<!-- claude-projects-attribution: {"github_login":"os-warren"} --> _Requested by **Warren** · [project thread](https://claude.ai/code/project/chan_01U5RdnAAmkSQmZbqh6FtqZ8?thread=cmsg_01U5RdnAAmkSQmZbqh6FtqZ8MyE4m329ZuXhdkjK4apEQv)_ Fixes #29709 Clause-②: no Metadata-protocol: none ## 维护者速读 - 改了什么:AGENTS.md 角色表两行就地改写,写明新包按种类命名、`plugin-` 前缀冻结在现有十个;pm-dispatch 派发令加一行建包要求。 - 为什么改:ADR-0012 写的 `plugin-notification-push` 差点让推送通道成为孤例;仓里没有任何一句话说新包怎么起名、ADR 与仓内先例冲突时谁赢。 - 风险与回滚:只改规则文字,不改任何包、不改名;两文件行数净零。回滚 = revert 本 PR。 - 先看:`AGENTS.md` 的 `packages/services/**` 与 `packages/plugins/**` 两行;`.claude/skills/pm-dispatch/references/execution-duties.md` 派发节新增行。 - 两分钟验证:`pnpm check:pm-skill-ratchet`,预期 AGENTS.md 1050/1050、execution-duties.md 188/188 皆绿。 - 需要你做的:批准本 PR(AGENTS.md 属 Tier H,需维护者批准)。 ## What changes - `AGENTS.md` roles table, two rows rewritten in place (zero line growth, 1050 of the 1050-line ceiling): - `packages/services/**`: a new kernel-managed service (fills a `core-services` slot, registers a service, or holds transports/credentials) is `@objectstack/service-NAME` in `packages/services/service-NAME`. Plus the ADR-precedence sentence, which opens "For any new package, in this row or the one above": a package name in an ADR is a proposal; where the tree's precedent differs, the PR that creates the package follows the precedent and amends that ADR's status line in the same change. It sits in the row, so `docs/adr/` is untouched. - `packages/plugins/**`: a new package here is named by its kind (`embedder-*`, `knowledge-*`, …); drivers and connectors have their own directories (`packages/drivers/driver-*`, `packages/connectors/connector-*`); the `plugin-` prefix is frozen to the ten that carry it today and never coined again; none of the ten is renamed. - `.claude/skills/pm-dispatch/references/execution-duties.md` (派发 section), one line added after the "lists, paths, line numbers are read from the tree at dispatch" rule: an order that creates a package names the directory and the npm name, and the dev measures same-kind precedent before writing; the naming rule itself lives in the AGENTS.md roles table (not restated). 118 bytes, under the 120-byte line cap. - Paid for under `check:pm-skill-ratchet` (execution-duties.md 188/188, headroom 0) by retiring one line restated elsewhere: 复核 section 「报告或复核见涉 cloud ⇒ 整卡 `Release:`+`pm:retriage` 转 cloud 车道,读点留卡;⛔ 不拆半边。」. Surviving home: `.claude/skills/pm-dispatch/references/cross-repo-coordination.md` lines 44 (涉 cloud 即整卡归 cloud PM), 46 (⛔ 不拆半边等读数) and 47 (在飞卡见涉 cloud 即 `Release:`+`pm:retriage` 交分诊转 cloud 车道,已测读点留卡). No re-wrap was used as currency. - Not changed: no package renamed or moved; no gate added (the gate is the `domain:devx` sibling card #29710, which freezes the same ten names). ## Why Maintainer ruling, verbatim (project thread "Decide push channel package name", 2026-11-03): 「应该用 service-*,包括如何制定仓库规则,避免类似的问题」 (02:11:43Z) and 「plugin- 太笼统,是不是建议逐渐退役这个名字。」 (02:12:01Z). The ten `plugin-*` names are published, so the prefix is retired for new names only. ## Verification Measured on `origin/main` c9636f1 before editing: <details><summary>Packages under packages/services and packages/plugins (directory = npm name for all 32)</summary> - services (18): `service-analytics`, `service-automation`, `service-cache`, `service-cluster`, `service-cluster-redis`, `service-datasource`, `service-i18n`, `service-job`, `service-knowledge`, `service-mailbox`, `service-messaging`, `service-package`, `service-print`, `service-queue`, `service-realtime`, `service-settings`, `service-sms`, `service-storage` (all `@objectstack/`). - plugins (14): `embedder-openai`, `knowledge-memory`, `knowledge-ragflow`, `organizations`, and the ten `plugin-*`: `plugin-approvals`, `plugin-audit`, `plugin-auth`, `plugin-dev`, `plugin-email`, `plugin-hono-server`, `plugin-pinyin-search`, `plugin-security`, `plugin-sharing`, `plugin-webhooks`. - `grep '"name": "@objectstack/plugin-'` over every `packages/**/package.json`: exactly those ten. Same set as #29710 measured on c9636f1. - AGENTS.md: 1050 lines, ceiling 1050 (`scripts/pm/check-skill-line-ratchet.mjs`); widest-table-row pin 768 B; the rewritten rows are 473 B (services) and 565 B (plugins) after the review round (fix commit `7187a55e`; gates re-ran on it, same 20 families, all exit 0). </details> <details><summary>Local gates: 20 of 20 derived by `dispatch-gates --commands` plus `pnpm lint`, all exit 0; `--ran` reconciliation 20 run, 0 NOT-MEASURED, 0 UNRUN</summary> Run on the edit at base c9636f1 after `pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` (exit 0). `origin/main` 0eb97fa was then merged (it touches neither file) and `pnpm check:pm-skill-ratchet` re-ran at exit 0. ```text node scripts/check-closing-keyword-parity.mjs :: exit 0 node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0 node scripts/check-comment-mask-corpus.mjs :: exit 0 node scripts/pm/check-harness-current.mjs --self-test :: exit 0 pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0 pnpm check:agent-test-spelling :: exit 0 pnpm check:cross-package-test-inputs :: exit 0 pnpm check:doc-authoring :: exit 0 pnpm check:docs-audit-scope :: exit 0 pnpm check:driver-memory-census :: exit 0 pnpm check:gitlink-declared :: exit 0 pnpm check:nul-bytes :: exit 0 pnpm check:pm-governed-merges :: exit 0 pnpm check:pm-governed-prose :: exit 0 pnpm check:pm-skill-id-lint :: exit 0 pnpm check:pm-skill-ratchet :: exit 0 pnpm check:refd-timer-probe :: exit 0 pnpm check:required-contexts :: exit 0 pnpm check:skill-frame-sync :: exit 0 pnpm check:watch-hint-literal :: exit 0 pnpm lint :: exit 0 ``` `check:pm-skill-ratchet` readings: AGENTS.md 1050 lines (ceiling 1050), widest table row 768 B (pin 768); execution-duties.md 188 lines (ceiling 188). </details> Line budget: AGENTS.md 1050 → 1050; execution-duties.md 188 → 188 (+1 / −1). Not a `skills/**` change, so no whole-pack reading is owed. `skip-changeset`: `AGENTS.md` and `.claude/**` ship in no package's `files[]`. ## Human Minimum - [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic. (not touched) - [x] 2. Every name I added uses the casing for its kind. (no identifiers added) - [x] 3. No formatter ran; `pnpm lint` passes. - [x] 4. One issue, one branch off an up-to-date `main`, one pull request. - [x] 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (publishes nothing: `skip-changeset`) - [x] 6. `packages/spec` touched: its generated artifacts are regenerated and committed. (not touched) - [x] 7. No hand edits to `content/docs/references/`, `packages/*/CHANGELOG.md` or `content/docs/releases/`. - [ ] 8. Title, body and comments are in English. (the 维护者速读 block is Chinese by the os-dev definition; the retired line is quoted verbatim) - [x] The *Before Submitting* list in CONTRIBUTING.md is done. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01JQwxbWzSjXRKg3dUCvmJgB <!-- signed: domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf --> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 318a23c commit 77ce3d4

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎.claude/skills/pm-dispatch/references/execution-duties.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@
133133
- ⛔ GitHub MCP 写:`create_pull_request`、`update_pull_request`、`issue_write`、`add_issue_comment` 等。
134134
- 多仓项目线程不加载仓 `settings.json` deny,此行即唯一防线;两数 = 写预算与 `mcp_calls`。
135135
- 清单、路径、行号在派发那一刻从树上取,⛔ 不从卡片/上次派发/记忆抄。
136+
- 建包单:派发令点名目录与 npm 名,dev 动笔前先测同类包先例;命名规则见 AGENTS.md 角色表。
136137
- 门禁清单取 `dispatch-gates --commands --repo 仓` 逐条跑,退出码先落盘,`--ran` 对账;被拒即手推。
137138
- 点名单是线索不是规格,dev 对实际改动重取补跑;行级断言转述前必须自己重验。
138139
- 派发令里关于代码的危害断言必须有读数(点名 call site / 路径 / 迁移)。
@@ -176,7 +177,6 @@
176177

177178
- 你是记录在案的复核人:对 GitHub 核验,⛔ 不对报告的自述核验。
178179
- 逐项判据展开在 `references/review-checklist.md`,每份报告对着它过。
179-
- 报告或复核见涉 cloud ⇒ 整卡 `Release:`+`pm:retriage` 转 cloud 车道,读点留卡;⛔ 不拆半边。
180180
- 改到已有 `.changeset/*.md` 的 PR ⛔ 不打 `skip-changeset`;确认取同 head 达档 PASS 或维护者原话。
181181
- 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。
182182
- 触 `skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 座位读,⛔ 不从作者座位读。

‎AGENTS.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,8 +724,8 @@ test regenerate; the wrapper reports all three each run rather than staying sile
724724
| `packages/core/**` | Kernel Engineer | Runtime logic OK here |
725725
| `packages/runtime/**` | Runtime Engineer | Bootstrap, plugin registration |
726726
| `packages/rest/**` | API Engineer | Route gen, middleware |
727-
| `packages/plugins/**` | Plugin Developer | Implements spec contracts |
728-
| `packages/services/**` | Service Engineer | Kernel-managed services |
727+
| `packages/plugins/**` | Plugin Developer | Implements spec contracts. A new package here is named by its kind (`embedder-*`, `knowledge-*`, …); drivers and connectors have their own directories (`packages/drivers/driver-*`, `packages/connectors/connector-*`). The `plugin-` prefix is frozen to the ten that carry it today (`plugin-approvals`, `plugin-audit`, `plugin-auth`, `plugin-dev`, `plugin-email`, `plugin-hono-server`, `plugin-pinyin-search`, `plugin-security`, `plugin-sharing`, `plugin-webhooks`) and is never coined again; none of the ten is renamed |
728+
| `packages/services/**` | Service Engineer | Kernel-managed services. A new one (fills a `core-services` slot, registers a service, or holds transports/credentials) is `@objectstack/service-<name>` in `packages/services/service-<name>`. For any new package, in this row or the one above: a package name in an ADR is a proposal; where the tree's precedent differs, the PR that creates the package follows the precedent and amends that ADR's status line in the same change |
729729
| `packages/adapters/**` | Integration Engineer | Framework bindings, zero business logic |
730730
| `packages/client*/**` | SDK Engineer | Public API, DX, type safety |
731731
| `apps/docs/**` | Docs Engineer | Fumadocs + Next.js, MDX |

0 commit comments

Comments
 (0)