feat(skills): publish objectstack-pm-dispatch — the project-agnostic PM dispatch loop (#4607) - #4621
Merged
Conversation
…PM dispatch loop (#4607) Generalizes the repo-internal .claude/skills/pm-dispatch core into the published skills/ catalog so any ObjectStack project (hotcrm, customer projects) can install the loop with the skills CLI. Project-specific rules are replaced by two seams: an optional .claude/pm-dispatch.json (backlogRepo / repos / batch / mode / conventionsFile / routingLabelPrefix, zero-config = current repo is the only shard and the backlog), and pointers to the project's own conventions file for gates, release-note artifacts, branch naming and merge policy. The developer-agent procedure ships embedded as a paste-in template, so the loop needs no custom agent types. Adds the upstream-reporting section for platform defects found in an app project. The internal .claude version is untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012C2cd7tL8QDoZ2QKN3djJ5
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckNo hand-written docs reference the 0 changed package(s). ✅ |
os-zhuang
marked this pull request as ready for review
August 2, 2026 11:43
os-zhuang
enabled auto-merge
August 2, 2026 11:43
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4607
做了什么
把
.claude/skills/pm-dispatch(仓库内部 PM 派发机制)的通用内核泛化为发布目录skills/里的正式 skill:skills/objectstack-pm-dispatch/SKILL.md(807 行,无metadata.internal,metadata.domain: process)。第三方 ObjectStack 项目(hotcrm、客户项目)可经npx skills add objectstack-ai/objectstack/skills --skill objectstack-pm-dispatch安装。覆盖 issue 列出的全部内核内容:队列标签状态机与幂等标签初始化;认领协议(同账号竞态验证 + 跨账号 assignee 身份)与 ~24h 僵尸认领回收;backlog 持续分诊 + 派发前过时前提核查;批次独立性(文件不相交、
Blocked-by依赖不同批);复核契约(ACCEPT / REWORK≤2 / ESCALATE,以 GitHub 实况为准)与合并政策(复核过 + CI 绿 → merge queue 或按项目惯例);升级判据 + 两轴决策分析原文保留(项目长远合理性 × 防 AI 写代码犯错);多 PM 按仓库分片 + 分片登记表 + 跨分片移交;容器资源纪律(重型阶段flock互斥、堆上限、范围化构建、PID 精确操作、worktree 清理);内嵌通用开发 agent 规程模板(worktree-first、范围=issue、contract-first、JSON 报告契约、needs_decision 而非猜)——不依赖自定义 agent 类型。Upstream reporting 节(维护者点名):应用项目发现平台缺陷时——先对照平台 main 做过时前提核查;最小复现 + 钉版本 + 引用被违反的契约;绝不在应用侧加容忍性 workaround;上报 issue 带
Part of <app>#N回链、不打对方队列标签(平台侧 PM 自行分诊);应用侧任务以Blocked-by:挂起或钉版本登记书面解除条件。配置约定:读取可选的
.claude/pm-dispatch.json(backlogRepo/repos/batch/mode/conventionsFile/routingLabelPrefix);无配置零配置起跑(当前仓库 = 唯一分片 = backlog)。所有项目特定门禁(分支命名、release-note 工件、测试命令、合并政策)从项目自己的 conventions 文件读取,冲突时项目文件优先。目录命名:
objectstack-pm-dispatch而非 issue 原文的skills/pm-dispatch(请维护者确认)issue 正文写的是
skills/pm-dispatch/SKILL.md,本 PR 落地为skills/objectstack-pm-dispatch/,理由:objectstack-*前缀,frontmattername与目录名一致。skills CLI 的消费端 skill 命名空间是扁平的——裸名pm-dispatch在客户项目里极易与其他来源的同名 skill 冲突;前缀即厂商命名空间,与既有目录形态一致。.claude/skills/pm-dispatch本 PR 不动(issue 边界要求)。若发布版也叫pm-dispatch,本仓库的 agent 会同时看到两个同名 skill(内部版 + 发布版),加载哪个是随机的——这正是 fix(create-objectstack): scope skill installs to the curated skills/ catalog #3101 目录边界要防的混淆。前缀不同,两版并存无歧义,后续「内部版瘦身为发布版 + 内部配置」的演进也不需要改名。build-skill-docs.ts的DISPLAY注册表、skills/README.md索引、skills-reference.mdx全按objectstack-*组织;沿用前缀即零特例。若维护者坚持 issue 原文的裸名,改名是一次
git mv+ 注册表一行,成本极低——本 PR 先按目录既有惯例落地。门禁与防回退验证(revert-proof)
pnpm --filter @objectstack/spec check:skill-docs✅(生成物同步)pnpm --filter @objectstack/spec check:skill-refs✅(process skill 无 Zod 引用,SKILL_MAP不涉及)packages/create-objectstacktemplate-consistency.test.ts:18/18 ✅(含目录边界 4 项)check:skill-docsexit 1(✗ … is out of date);DISPLAY注册项 → exit 1(✗ DISPLAY entry without SKILL.md: objectstack-pm-dispatch);metadata.internal: true→ 边界测试never marks a curated skills/ entry internal失败。check:skill-examples与本变更无关(新 skill 无os:check标记的 ts 代码块;该门禁在 CI 于 workspace build 之后运行)。边界与 changeset
.claude/skills/pm-dispatch未动;.changeset/published-pm-dispatch-skill.md空 frontmatter(不发布任何 npm 包:packages/spec的files不含scripts/,skills 目录经 skills CLI 从 git 直接分发);content/docs/releases/。🤖 Generated with Claude Code
https://claude.ai/code/session_012C2cd7tL8QDoZ2QKN3djJ5
Generated by Claude Code