mcpField
P
position

position

github.com/camachoAgent 工作流323 次安装
代码仓库

关于 position

position 会加载持久的团队职位配置,并执行其中定义的会话启动流程,适用于采用团队分工的 Agent。它将长期职位与一次性派发的角色区分开来。

主要功能

  1. 01加载职位配置
  2. 02读取可选操作手册和决策记录
  3. 03执行配置定义的会话启动流程
  4. 04恢复中断的会话
  5. 05切换团队职位

适用场景

  1. 01以指定团队成员身份开始会话
  2. 02恢复工作会话上下文
  3. 03执行职位专属的启动流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/camacho/ai-skills --skill position

安装后在 Claude Code 中输入/position确认已加载。

详细介绍

/position — 将团队职位加载到会话中

/position <name> 是通用的队友初始化技能。它会从 ai-workspace/team/<name>.md 加载职位档案,并执行档案定义的初始化流程。它取代了专门的 /tpm(若存在,/tpm 是 /position tpm 的轻量封装,并添加了单向拒绝约定——见下文“封装技能”)。

职位与角色

  • 职位 = 持久身份,在每个队友会话中加载一次。位于 ai-workspace/team/<name>.md。示例:tpm、software-engineer、technical-editor、architect。
  • 角色 = 在 /task 步骤中分派的一次性活动。位于 ai-workspace/agents/<name>.md。示例:implementer、code-reviewer、test-writer、explorer。

/position 仅用于职位。要分派一次性角色,请使用工具的子 Agent 分派机制——Claude Code:Agent({subagent_type: <role-name>});Codex/Cursor:请参阅项目的 AGENTS.md §Agent Roles,了解相应的分派模式。

1. 确定职位

NAME="<arg>"
PROFILE="ai-workspace/team/${NAME}.md"
STATE_DIR="ai-workspace/team/${NAME}"

预检:如果 $PROFILE 不存在,则拒绝并提示:

在 ai-workspace/team/<name>.md 中找不到职位 <name>。可用职位:运行 ls ai-workspace/team/*.md 查看。(若要分派一次性子 Agent 角色,请改用工具的角色分派机制——Claude Code:Agent({subagent_type: <role>})。)

不要自动初始化。缺少档案是需要核验环境的信号。

2. 加载档案和状态

按顺序读取。先将所有文件加载到上下文中,再进行推理——不要边读边总结。

  1. $PROFILE(必需)——职位的角色身份、工作约定、决策规则、触发条件、反模式和生命周期钩子。
  2. ${STATE_DIR}/PLAYBOOK.md(若存在)——职位的操作手册。
  3. ${STATE_DIR}/DECISIONS.md(若存在)——职位的仅追加式判断日志。

大多数职位都没有同级状态目录——只有有状态的职位(目前只有 tpm)才有。若目录不存在,此技能会静默跳过状态加载。

3. 重新生成实时状态(若档案有规定)

职位档案正文会说明是否以及如何在会话开始时重新生成实时状态。常见模式:

  • TPM:gh project item-list + git worktree list + gh pr list
  • Software-engineer:查看 #general 聊天记录末尾;若为恢复会话,则读取 .branch-context.md
  • Technical-editor:查看 #general 聊天记录末尾,查找审查请求

严格遵循档案中的 ## Session lifecycle / Session start 部分。此技能不规定重新生成步骤——由档案负责规定。

4. 确认并担任职位

加载和初始化后:

  1. 确认:Position '<name>' loaded. Following profile session-start instructions.
  2. 在本次会话剩余时间内保持该职位——直到会话结束,Agent 都会依据档案规则以 @<name> 身份运行。
  3. 聊天账号(若职位使用的聊天系统已上线):发送档案规定的注册消息。

5. --resume 标志(可选)

/position <name> --resume 表示恢复已中断的会话:

  • 若 .branch-context.md 存在,则按职位档案中的恢复约定读取
  • 跳过注册聊天消息(团队应已知晓该职位)
  • 从上次会话中断处继续

如果档案没有恢复语义,--resume 将静默无效。

6. 切换职位

通过再次调用 /position <other>,会话可以切换职位。以最新职位为准。之前职位的档案规则将不再生效。例外:tpm 职位具有单向拒绝约定(若已安装,则由 /tpm 封装技能强制执行)——根据其自身规则,会话中途退出 TPM 将被拒绝。

反模式

反模式错误原因
从 ai-workspace/agents/ 读取 /position那是角色目录(子 Agent)。岗位定义在 team/ 中。
自动初始化缺失的岗位拒绝是约定的一部分——必须先定义岗位
只软加载配置文件,不加载状态目录有状态的岗位需要两者;跳过状态会破坏连续性
加载配置文件时对其进行总结先加载,再推理——与 /tpm v0 约定相同
将 /position <subagent-role> 视为有效调用(例如 /position implementer)角色不是岗位;应拒绝,并引导使用工具的角色分派机制(Claude Code:Agent({subagent_type: <role>}))

调用形式

  • /position <name> — 加载岗位并运行引导流程
  • /position <name> --resume — 相同,但在配置文件定义了恢复语义时按其恢复

包装技能

岗位可以附带同级的包装技能,在 /position 之上增加岗位专属的生命周期行为。包装技能是可选的——始终可以直接使用 /position <name>。如果包装技能与 /position 一同安装在同一个技能仓库中,则优先使用适用该岗位的包装技能(它会处理通用加载器无法处理的岗位专属约定)。

示例:/tpm(作为独立技能提供时)是 tpm 岗位的包装技能——它会调用 /position tpm 并添加单向拒绝约定。如果你的环境中未安装 /tpm,则直接使用 /position tpm;该岗位无需包装技能也能正常加载,只是不强制执行拒绝约定。

快速参考

步骤操作失败时
1解析 team/<name>.md拒绝调用并列出可用岗位
2读取配置文件和状态目录如果目录不存在,则静默跳过状态
3根据配置文件重新生成实时状态—
4确认并保持岗位身份—
5如果存在 --resume,则遵循其语义如果配置文件未定义恢复语义,则不执行任何操作
6重新调用时切换岗位对于单向岗位(tpm),拒绝切换

评论

支持 Markdown