Penpot implement-plan 命令详解:从 Issue 到 Commit 的 AI Agent 端到端实现流水线

发布时间:2026/9/7 8:51:47

Penpot implement-plan 命令详解:从 Issue 到 Commit 的 AI Agent 端到端实现流水线
Penpot implement-plan 命令详解从 Issue 到 Commit 的 AI Agent 端到端实现流水线【免费下载链接】penpotPenpot: The open-source design platform for Product teams that need scalable collaboration.项目地址: https://gitcode.com/GitHub_Trending/pe/penpotPenpot 仓库内置了一套面向 AI 编程 AgentOpenCode的自动化研发流程其中 implement-plan 命令 是计划已就绪之后的执行入口它在一次调用内串联起创建 GitHub Issue、创建issue-NNNN分支、按计划实现功能、按 Penpot 提交规范落盘 commit 四个环节。读完本文你将掌握这条流水线的每一步设计意图、所依赖的 skill 与 workflow memory 的协作关系以及 Penpot 为 Agent 设定的安全边界如永不 push并能在自己的仓库中参考同样的模式组织 AI 辅助开发流程。命令定位一次计划就绪后的全链路执行implement-plan的完整定义位于 .opencode/commands/implement-plan.md其 YAML frontmatter 声明了它的基本属性description: Execute a ready plan end-to-end — create a GitHub issue, branch issue-NNNN, implement the plan, then commit via the create-commit skill agent: build两个关键点值得注意agent: build该命令在具有写代码能力的 build agent 下运行对照同目录的 resolve-git-conflicts.md 也使用 build agent而 review.md 则明确要求不修改任何代码。无额外参数文档原文明确写道——This command is run once a plan is ready (for example, from plan mode). Execute the plan already prepared in the current session context — it does not take extra arguments. 也就是说命令的全部输入来自当前会话上下文中已经准备好的计划它不负责重新规划只负责把计划端到端地执行完毕。这与上游的 planner skill 形成清晰的职责切分planner 扮演只读的高级软件架构师角色产出包含 Context、Affected Modules、Approach、Risks、Testing 五个部分的结构化实施计划并将其保存到.opencode/plans/YYYY-MM-DD-title.md而 implement-plan 接手之后的第一件事就是把这个计划物化为一个可追踪的 Issue再围绕 Issue 组织分支与提交。整个链条可以概括为planner只读规划 └─ implement-plan 命令 ├─ 1. create-issue skill → 获得 Issue 编号 NNNN ├─ 2. git checkout -b issue-NNNN ├─ 3. 按会话中的计划实现代码不提交 └─ 4. create-commit skill → 规范 commit不 push步骤 1创建 Issue —— 把计划转成可追踪的研发单元命令的第一步是Use thecreate-issueskill, following theCreating Issues from Draft Bodyflow inmem:workflow/creating-issues. Derive the issue title and body from the plan. 这一步有两条硬性要求标题与正文必须从计划派生而不是直接复用计划文件名必须捕获新 Issue 的编号文档把它记为NNNN——因为这个编号同时决定分支名和后续 commit 的引用格式是整条流水线的主键。create-issueskill 本身只是一个薄入口见 create-issue/SKILL.md所有真实规则——标题派生、元数据策略、正文模板、Issue Type ID——都集中存放在 workflow/creating-issues.md 这份 workflow memory 中implement-plan 指定的正是其中的Creating Issues from Draft Body流程没有现成 PR从计划/草稿正文出发建 Issue。这份 memory 提供了相当具体的可执行细节构成 implement-plan 第 1 步的完整操作手册标题派生规则Bug 标题用描述性现在时格式为[Where] [present-tense verb] when [condition]例如 Plugin API crashes when setting text fills禁止以 Fix 等祈使动词开头。Feature / Enhancement 标题用祈使句格式为[Imperative verb] [what] in/on [where]例如 Add customizable dash and gap length controls to dashed strokes in the sidebar。通用规则必须写清whereUI 位置或模块剥离bug:、feature:、:bug:等前缀纯文本、不用 emoji一个描述里若含两个相关问题用 and 把两者都写进标题。元数据与正文模板字段规则Labels社区贡献者 PR 加community contribution不加bug/enhancement标签用 Issue Type 代替Milestone当前或下一个计划里程碑不确定则省略Project固定为Mainproject number 8用--project MainIssue Typegh issue create无法直接设置需创建后用 GraphQL 补设正文则写入临时文件以避免 shell 引号问题Bug 与 Enhancement 各有固定模板Description / Steps to reproduce / Expected behavior / Affected versions或 Description / Use case / Affected versions并且要求不要软换行段落——每段在源码中保持单行换行只用于结构性分隔章节标题、列表项、代码围栏、空行以便后续 diff 更干净。建 Issue 的实际命令cat /tmp/issue-body.md ISSUE_BODY body content here ISSUE_BODY gh issue create \ --repo penpot/penpot \ --title Derived title \ --label label \ --project Main \ --body-file /tmp/issue-body.md命令输出形如https://github.com/penpot/penpot/issues/NUMBER这里的NUMBER就是 implement-plan 文档所说的NNNN。若需要设置 Issue Type则先通过 GraphQL 查询拿到 Issue 的 node id再执行updateIssuemutation 设置issueTypeIdmemory 中列出了 penpot/penpot 仓库六种 Issue Type 的 ID 表以及Bug report → Bug、feature request → Enhancement/Feature、文档 → Docs、其余 → Task的映射规则最后用gh issue view NUMBER --json ...验证标题、标签、里程碑与项目归属。步骤 2创建以 Issue 命名的分支Issue 创建成功后命令要求立即切换到以 Issue 命名的分支git checkout -b issue-NNNN其中NNNN替换为步骤 1 捕获的 Issue 编号。这个命名约定让分支与其追踪的 Issue 一一对应从分支名即可反查该次改动对应的需求单元也为后续 commit 中的Closes #NNNN引用建立了可校验的锚点。值得注意的是implement-plan 只要求创建并切换而不要求任何 push 或远端操作——这与 AGENTS.md 顶部的 HARD RULES 一致Nevergit push, force-push, or modifygit origin... The user pushes from their own shell. Agent 的全部活动被限制在本地工作区内。步骤 3执行计划 —— 只实现不提交第三步是流水线的主体Implement the prepared plan from the session context. Work methodically, keeping changes focused on what the issue requires.Do not commit— the commit happens in step 4.这里有两层设计意图聚焦实现改动严格限定在 Issue 所要求的内容上。上游 planner 在生成计划时已经按垂直切片原则把任务拆成 XS/S/M 级每个任务不超过约 5 个文件、附带验收标准与验证命令并依据 monorepo 依赖图frontend - common、backend - common、exporter - common、frontend - render-wasm排定顺序执行阶段要做的就是逐任务落地并逐段验证。提交权后置实现阶段禁止git commit把何时提交、如何写 message收敛到第 4 步的单一入口。这避免了实现中途产生碎片化提交也保证最终提交信息能一次性准确概括全部改动。同时AGENTS.md 要求 Agent 在编码前先读受影响模块的 core memory如frontend/core、backend/core、common/core并Never pipe test output directly to filters——测试输出必须先重定向到文件再检查以防隐藏失败。这些约束虽然不写在 implement-plan 文档内却是该命令执行环境的一部分。步骤 4通过 create-commit skill 落盘提交实现完成后命令要求load thecreate-commitskill and follow its workflow to commit the changes并特别指出要提供三样东西一段简要总结——实现了什么、为什么Issue 引用issue-NNNN当前运行的模型名称以便正确写入AI-assisted-bytrailer。create-commit skill 的职责边界写得很清楚它owns the commit format, staging review, and safety checks — it does not implement features or push。其工作流为暂存调用上下文指定的文件不向用户确认运行git diff --staged复查内容——若发现密钥、.env值、调试打印或与声明意图不符的内容立即停下并告知用户按规范起草 message正文每行 72 字符换行执行git commit -m subject -m body正文含特殊字符时可用git commit -F -AI-assisted-bytrailer 的取值由调用上下文提供原样使用。commit message 的完整规范在 workflow/creating-commits.md 中定义:emoji: Subject line (imperative, capitalized, no period, 70 chars) Body explaining what changed and why. Wrap lines at 72 characters — git log and tooling render long lines poorly. Keep each line concise. AI-assisted-by: model-name要点包括Emoji 类型菜单:bug:bug fix、:sparkles:enhancement、:tada:new feature、:recycle:refactor、:lipstick:cosmetic、:ambulance:critical fix、:books:docs、:wrench:config、:zap:perf、:whale:docker、:fire:removal、:globe_with_meridians:translations 等共 17 种。Issue 引用格式使用Closes #NNNN而不是Fixes #NNNN将 commit 关联到 GitHub Issue。AI-assisted-by规则只写裸模型名如mimo-v2.5不加opencode-go/之类前缀。身份来源不猜测、不使用--author作者身份取自本地 git config。create-commit 还附带一组硬约束不 push、不运行git reset/git checkout/git restore/git clean/rm、不改作者身份、未经明确要求不 amend 本会话之外的提交、不绕过 pre-commit hooks、不添加本会话未创建的未跟踪文件。安全边界流水线在哪里停下把整条命令串起来看implement-plan 的终点是本地的一次规范 commit其最后一句明确写道Do not push. Pushing is handled separately by the user. 即推送动作永远留给用户在自己的 shell 中完成。这一设计与 AGENTS.md 的硬规则永不 push、永不修改远端、已推送的 commit 未经明确要求不 amend共同构成了 Agent 的版本控制安全边界Agent 负责 issue 化、分支、实现与提交这些可本地验证的环节而所有影响远端仓库的操作都保留给人类。小结四个环节与它们的支撑文件环节动作关键支撑上游生成结构化实施计划只读planner skill、计划存至.opencode/plans/1从计划派生 Issue捕获编号 NNNNcreate-issue skill、creating-issues memory2git checkout -b issue-NNNN分支名与 Issue 一一对应3按会话中的计划实现不提交计划中的任务切片、验收标准与模块验证命令4按规范提交emoji 前缀、72 列正文、Closes #NNNN、AI-assisted-by不推送create-commit skill、creating-commits memoryimplement-plan 的价值在于它把AI 写代码中最容易失控的环节——需求追踪Issue、隔离分支、质量收敛单次规范提交、责任边界不 push、不篡改作者身份——固化成一条不可跳步的流水线每一步的格式细节都下沉到可独立维护的 skill 与 memory 中。对于希望在自己仓库中搭建类似 AI 辅助研发流程的团队这套command 只做编排、规则下沉到 skill/memory、推送权保留给人类的划分方式是一个值得直接参照的模板。【免费下载链接】penpotPenpot: The open-source design platform for Product teams that need scalable collaboration.项目地址: https://gitcode.com/GitHub_Trending/pe/penpot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

华为GaussDB DataStudio工具详解:下载部署、核心功能与排障实战

华为GaussDB DataStudio工具详解:下载部署、核心功能与排障实战

2026/9/7 8:41:47

简介:面向华为高斯GAUSS数据库的数据管理与开发场景,这套资源集成了Data Studio工具及其配套使用手册,适合数据库管理员、开发工程师及大数据平台运维人员。压缩包共包含521个文件,总大小148.3MB,文件类型以jar运行组件…

2026年论文初稿提速攻略:AI写作工具怎么选才不踩雷

2026年论文初稿提速攻略:AI写作工具怎么选才不踩雷

2026/9/7 8:41:47

引言:初稿这件事,卡住了多少人的时间 论文初稿的撰写周期往往被低估。多数人计划两周完成,实际却拖到一个月以上。问题不在写作能力,而在于从选题到成稿的各个环节缺乏高效的组织方式。选题方向反复摇摆、文献梳理耗时过长、框架…

2026年论文查重通关:AI写作降重降AI要一起做

2026年论文查重通关:AI写作降重降AI要一起做

2026/9/7 8:41:47

AI写论文查重能过吗?直接给结论:能过,但前提是查重率和AI检测率两个指标都得过关。只降重不降AI,或者只降AI不管查重,都会卡在最后一步。 高校双检机制已成常态 现在多数高校对毕业论文实行双检:查重系统…

UTAMP-SBL与迭代细化实现低复杂度高精度DOA估计

UTAMP-SBL与迭代细化实现低复杂度高精度DOA估计

2026/9/7 13:21:59

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

常见问题收集——spring篇

常见问题收集——spring篇

2026/9/7 13:21:59

一、Transactional事务不起作用的解决 问题: 配置了Transactional注解,但是没有起作用 原因: 1.数据库引擎要支持事务 如果使用mysql,注意表要使用支持事务的引擎,比如innodb,myisam不支持事务的 2.是否开启…

DDR5 SPD深度解析:JESD300-5标准下的I3C Hub与CRC校验

DDR5 SPD深度解析:JESD300-5标准下的I3C Hub与CRC校验

2026/9/7 13:21:59

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

网站安全应急响应实战:从攻击检测到安全加固完整指南

网站安全应急响应实战:从攻击检测到安全加固完整指南

2026/9/7 13:21:59

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

AI视频剪辑底层逻辑:从拉片到分镜的完整工作流

AI视频剪辑底层逻辑:从拉片到分镜的完整工作流

2026/9/7 13:21:59

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

VMP与JSVMP虚拟化保护分析:从字节码追踪到脱壳还原实战思路

VMP与JSVMP虚拟化保护分析:从字节码追踪到脱壳还原实战思路

2026/9/7 13:11:58

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/7 3:44:24

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

远程协作的工作台整理

远程协作的工作台整理

2026/9/7 3:38:07

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/6 23:21:51

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…