How to Create Custom Plans with “planmd” in Goose

how to create custom plans with “planmd” in goose

什么是鹅?
goose 是一种开发代理,可通过在终端或 ide 中自动执行编码任务来增强软件开发。在您输入的指导下,它会智能地分析您的项目需求,生成必要的代码,并自主实施更改。在与 goose 合作时,采用结构化方法来指导其执行以实现特定目标至关重要。这就是 plan.md 文件的用武之地。 plan.md 文件允许您为 goose 定义自定义计划,使用灵活的文本格式和 jinja 模板的强大功能来创建动态、可重用且面向目标的计划。

如何设置 goose
在创建自定义 plan.md 文件之前,您需要设置 goose。

第 1 步:github 上分叉 goose 和 goose 插件存储库并克隆它们。

第2步:安装homebrew — 访问brew.sh并按照安装步骤操作,或运行:

/bin/bash -c "$(curl -fssl https://raw.githubusercontent.com/homebrew/install/head/install.sh)"

第 3 步: 要安装 goose,请使用 pipx。首先确保 pipx 已安装:

brew install pipxpipx ensurepath

第四步:然后安装goose:

pipx install goose-ai

第 5 步: 启动会话 — 从您的终端导航到您要启动的目录并运行:

goose session start

goose 与您首选的法学硕士合作。默认情况下,它使用 openai 作为 llm 提供者。系统会提示您设置 api 密钥。

什么是“plan.md”文件?

plan.md 文件是一个文本文件,用作 goose 遵循的蓝图。它由两个基本组成部分组成:

a kickoff message that sets the context and overall goala structured list of tasks for goose to execute.

为什么使用 plan.md 文件?

定制:
您可以针对特定任务或项目定制 goose 的操作。

可重复使用性:
模板可以轻松地重复使用和修改类似目标的计划。

清晰度:
概述目标和步骤可确保更好的控制和可预测性。

创建您的第一个 plan.md 文件

假设您希望 goose 帮助建立一个新的设计系统。以下是您的 plan.md 的示例:

your goal is to set up a fresh design system for our app's redesign.- create folders for design components (buttons, forms, colors)- set up color palette based on brand guidelines- create typography styles for headings and body text- design basic button components with all states- create form elements (inputs, dropdowns)

看到任务中每行开头的那些破折号 (-) 了吗?超级重要! goose 会寻找这些信息来了解需要采取哪些步骤。要使用此计划运行 goose:

goose session start --plan plan.md

在计划中使用 jinja 模板
jinja 是一个模板引擎,允许您直接在文本文件中嵌入变量、循环和条件。使用 jinja,您可以使 plan.md 文件变得动态且适应性强。

key jinja 语法

变量: {{ 变量 }}

循环: {% for item in list %}…{% endfor %}

条件: {% if condition %}…{% endif %}

记住我们的 plan.md 文件,这是使用 jinja 模板的增强版本的样子。

# design system setup plan for {{ brand_name }}## goalset up a fresh design system for the {{ project_name }} app's redesign.---## steps to follow### 1. create foldersorganize design components into well-structured folders:- **buttons:** include all button components and their states (default, hover, active, disabled).- **forms:** include inputs, dropdowns, checkboxes, and radio buttons.- **colors:** store primary, secondary, and accent color palettes.### 2. set up color palettedefine a consistent color palette adhering to the brand guidelines:- **primary color:** {{ primary_color }} - **secondary color:** {{ secondary_color }}- **accent colors:** {{ accent_colors | join(", ") }}- **neutral colors:** add greys, whites, and blacks for backgrounds and borders.- **accessibility:** ensure color contrast meets accessibility standards (wcag).### 3. create typography stylesdefine text styles for the app:- **headings:** {{ heading_styles | join(", ") }} - **body text:** include base styles, captions, and links.- **font guidelines:** use {{ font_family }} with font sizes ranging from {{ font_sizes | join(", ") }}.### 4. design button componentsdesign the following button states:- default- hover- active- disabledensure all buttons are:- **responsive:** scalable across device sizes.- **accessible:** incorporate clear focus states for keyboard navigation.### 5. create form elementsdesign essential form components:- input fields (default, focused, error)- dropdowns (expanded, collapsed)- checkboxes and radio buttons (checked, unchecked, disabled)- submit buttons (loading, error)---## additional notes- test designs for usability and accessibility before finalizing.

将参数传递给计划
执行期间可以将参数传递到 plan.md 文件中。例如,为了使我们的设计系统设置计划动态且可重用,我们使用 jinja 模板,它允许我们传递根据特定项目、品牌或设计要求定制内容的参数。通过传递不同的参数集,我们可以轻松地为任何重新设计或产品生成个性化计划。

示例:与 jinja 传递参数

定义数据:第一步是准备要传递到模板中的数据。这包括品牌名称、颜色、排版风格和其他设计特定细节等值。

{    "brand_name": "awesomeapp",    "project_name": "awesomeapp redesign",    "primary_color": "#3498db",    "secondary_color": "#2ecc71",    "accent_colors": ["#e74c3c", "#9b59b6", "#f1c40f"],    "heading_styles": ["h1 (32px)", "h2 (24px)", "h3 (20px)"],    "font_family": "roboto, sans-serif",    "font_sizes": ["12px", "14px", "16px", "18px", "24px", "32px"],}

要使用此计划和参数运行 goose,您将运行以下命令:

goose session start --plan plan.md --args brand_name=awesomeapp,project_name="awesomeapp redesign",primary_color="#3498db",secondary_color="#2ecc71",accent_colors="#e74c3c,#9b59b6,#f1c40f",heading_styles="h1 (32px),h2 (24px),h3 (20px)",font_family="roboto, sans-serif",font_sizes="12px,14px,16px,18px,24px,32px"

goose 将使用这些值填充 plan.md 中的占位符。

# Design System Setup Plan for AwesomeApp## GoalSet up a fresh design system for the AwesomeApp Redesign app's redesign.---## Steps to Follow### 1. Create FoldersOrganize design components into well-structured folders:- **Buttons:** Include all button components and their states (default, hover, active, disabled).- **Forms:** Include inputs, dropdowns, checkboxes, and radio buttons.- **Colors:** Store primary, secondary, and accent color palettes.### 2. Set Up Color PaletteDefine a consistent color palette adhering to the brand guidelines:- **Primary Color:** #3498db- **Secondary Color:** #2ecc71- **Accent Colors:** #e74c3c, #9b59b6, #f1c40f- **Neutral Colors:** Add greys, whites, and blacks for backgrounds and borders.- **Accessibility:** Ensure color contrast meets accessibility standards (WCAG).### 3. Create Typography StylesDefine text styles for the app:- **Headings:**   - H1 (32px)  - H2 (24px)  - H3 (20px)- **Font Family:** Roboto, sans-serif- **Font Sizes:**   - 12px  - 14px  - 16px  - 18px  - 24px  - 32px### 4. Design Button ComponentsDesign the following button states:- Default- Hover- Active- DisabledEnsure all buttons are:- **Responsive:** Scalable across device sizes.- **Accessible:** Incorporate clear focus states for keyboard navigation.### 5. Create Form ElementsDesign essential form components:- Input Fields (default, focused, error)- Dropdowns (expanded, collapsed)- Checkboxes and Radio Buttons (checked, unchecked, disabled)- Submit Buttons (loading, error)---## Additional Notes- Test designs for usability and accessibility before finalizing.

最佳实践和提示

定义明确的目标:确保每个计划都以明确的目标开始。使用可重用模板:创建可以针对不同项目自定义的通用模板。文档假设:添加注释或注释来解释占位符和结构。测试小更改:验证 plan.md 文件中的每个更改以确保正确渲染。

结论
plan.md 文件是一个多功能工具,用于指导 goose 的执行以实现您的目标。通过结合明确的目标、结构化的步骤和动态 jinja 模板,您可以创建可重用且高度可定制的计划。无论您是要改进移动应用程序的用户体验还是处理复杂的项目,plan.md 都可以帮助您为 goose 提供清晰度、适应性和精确性。

以上就是How to Create Custom Plans with “planmd” in Goose的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:19:33
下一篇 2025年12月13日 18:19:41

相关推荐

  • 高级编程语言都需要入口文件吗?

    关于入口文件的普遍性 部分编程语言,如 Java 和 C++,明确拥有入口文件。例如,Java 程序通常包含一个包含 main 方法的类作为入口点,而 C++ 程序通常以包含 main 函数的源文件作为入口点。 入口文件在高级语言中的存在性 值得探讨的是,所有高级语言是否都需要入口文件。这个问题的答…

    2025年12月13日
    000
  • 程序的入口文件:什么语言需要,什么语言不需要?

    程序的入口文件解析 在编写程序时,入口文件是一个至关重要的概念。它决定了程序的执行起点,通常包含了程序的主函数。 入口文件并非必要 并不是所有语言都需要编写入口文件。例如: 脚本语言,如 Python 和 JavaScript,通常不需要明确指定入口文件。它们从执行命令开始,而不需要特定的主函数。基…

    2025年12月13日
    000
  • 运行时如何改变对象行为:多态的奥秘是什么?

    理解运行时更改对象行为的多态 多态是面向对象编程的一大好处。它允许我们在运行时更改对象的行为,从而提高代码的灵活性。 为了理解这句话:”多态允许我们在运行时更改对象的行为”,我们可以借助一个示例。 考虑以下代码示例: interface Animal { void makeS…

    2025年12月13日
    000
  • Python装饰器参数解析:如何用inspect或其他方法获取装饰器传入的参数?

    解析装饰器传入参数 问题: 如何使用 inspect 获取装饰器中传入的参数? 背景: 立即学习“Python免费学习笔记(深入)”; 代码如下,展示了一个自定义装饰器 task,它接受两个参数 _id 和 params。目标是解析 task 装饰器中传入的参数。 import inspectfro…

    2025年12月13日
    000
  • Python正则表达式如何准确统计Go语言文件中的类、属性和方法数量?

    python统计单个go语言文件类/属性/方法数时仅统计到一个方法 想要统计一个go语言文件中类、属性和方法的数量,可以使用正则表达式匹配文件内容。 统计方法正则表达式错误 在给定的代码中,统计方法的正则表达式为: 立即学习“Python免费学习笔记(深入)”; method_pattern = r…

    2025年12月13日
    000
  • Python Day 字符串函数

    python 是动态类型编程语言,这意味着不需要输入数据类型。相反,python 将默认采用数据类型。它也被称为鸭子类型编程语言。 供参考:https://docs.python.org/3/library/string.html https://peps.python.org/pep-0020/ …

    2025年12月13日
    000
  • Pygame子弹长度不变?可能是参数设置错误

    为什么改了子弹长度参数,子弹长度还是不变? 这个问题主要是因为在创建子弹矩形时,使用了错误的参数。 在问题中提供的代码片段中,子弹矩形被定义为: self.rect = pygame.rect(0, 0, self.settings.bullet_width, self.settings.scree…

    2025年12月13日
    000
  • 面向对象编程中多态的优势是什么?

    面向对象的优势:多态的运行时行为变更 多态被认为是面向对象编程中的主要优势之一,它允许我们在运行时更改对象的行为。理解这个概念至关重要。 多态通过允许我们创建在概念上类型相同但具有不同实现的类来实现。我们通过将这些类定义为共同接口或抽象类的子类来做到这一点。这使我们能够在不更改调用代码的情况下动态交…

    2025年12月13日
    000
  • LangGraph 状态机:管理生产中的复杂代理任务流

    什么是 langgraph? langgraph是专为llm应用程序设计的工作流编排框架。其核心原则是: 将复杂任务分解为状态和转换管理状态转换逻辑任务执行过程中各种异常的处理 想想购物:浏览→添加到购物车→结账→付款。 langgraph 帮助我们有效地管理此类工作流程。 核心概念 1. 国家 状…

    2025年12月13日
    000
  • 运行时改变对象行为:如何理解多态?

    多态:在运行时更改对象行为 问题: 如何理解语句“多态允许我们在运行时更改对象的行为”? 解答: 多态是一种面向对象编程的特性,它允许对象在运行时改变其行为。例如,在代码中,我们可以用一个对象替换另一个具有相同接口的对象,而无需更改调用该对象的代码。 以下示例代码演示了多态如何工作: // 定义一个…

    2025年12月13日
    000
  • 为什么修改子弹高度参数后,游戏中的子弹长度仍然不变?

    为什么改了子弹长度参数,但子弹长度还是不变? 这个问题与设置类中的bullet_height参数设置有关。以下代码段出自问题中提供的代码: #子弹设置self.bullet_speed = 3.0self.bullet_height = 1self.bullet_width = 3self.bull…

    2025年12月13日
    000
  • 面向对象编程中的多态:运行时如何改变对象的行为?

    多态的运行时行为更改:深入了解 多态被誉为面向对象编程的基石之一,它允许我们在运行时更改对象的行为。理解这一概念的本质至关重要。 多态的特性 多态基于两个关键特性: 接口和实现:定义一个抽象接口,并创建实现该接口的多个类。运行时行为:一个接口类型的变量可以指向实现该接口的任何类的实例。 通过示例了解…

    2025年12月13日
    000
  • 编程语言中,入口文件是必须的吗?

    入口文件的存在性 在某些编程语言中,程序的启动点很明确,通常使用一个包含入口函数的文件。例如: Java: 通常是包含 main 方法的类,该类指定了程序的起点。C/C++: 通常是包含 main 函数的文件,该函数标记了程序的开始。 但是,并非所有编程语言都强制要求存在入口文件。 脚本语言: 脚本…

    2025年12月13日
    000
  • Python统计Go语言文件方法数量为何出现偏差?

    python统计go语言文件类/属性/方法数量时为何只统计到1个方法? 在给定的python代码中,统计方法的正则表达式如下: method_pattern = re.compile(r’funcs+((.*?))s+(w+)s*((.*?))s*{‘) 然而,这个模式无法正确匹配代码中的所有方法。…

    2025年12月13日
    000
  • Pydantic Logfire 能私有化部署吗?

    使用 pydantic 的 logfire 时可否进行私有化部署? pydantic 中的 logfire 是一款日志聚合服务,旨在帮助开发人员轻松收集和分析日志。官方文档中确实提到,使用 logfire 需要将日志信息上传到其服务器。这会产生网络流量,并存在安全隐患。 官方目前不支持私有化部署。不…

    2025年12月13日
    000
  • 使用 Gemini Flash 构建视频洞察生成器

    视频理解或视频洞察由于其多方面的优势而在各个行业和应用中至关重要。它们通过自动生成元数据、对内容进行分类并使视频更易于搜索来增强内容分析和管理。此外,视频洞察提供了推动决策、增强用户体验并提高不同行业运营效率的关键数据。 google 的 gemini 1.5 模型为该领域带来了重大进步。除了在语言…

    2025年12月13日
    000
  • Pydantic 的 logfire 日志服务可以私有化部署吗?

    pydantic 的 logfire 能否私有化? logfire 是 pydantic 提供的一项日志服务,但对于网络安全比较谨慎的用户来说,可能担心使用 logfire 会出现数据泄露等问题。 官方答复: 根据 GitHub 讨论区上的官方回应,目前 logfire 还不支持私有化部署。不过,官…

    2025年12月13日
    000
  • Python装饰器参数如何通过inspect模块获取?

    通过inspect获取装饰器参数的难题 在python中,inspect模块提供了获取函数元数据的方法。然而,获取装饰器传入的参数却并非易事。 以以下代码为例: import inspectfrom functools import wrapsdef task(_id, params): def d…

    2025年12月13日
    000
  • Python协程报错:asyncio.wait()函数参数问题如何解决?

    python协程代码报错:如何解决初学者常见问题? 遇到协程报错问题时,需要仔细区分几个容易混淆的概念:协程(coroutine)、任务(task)和未来事件(future)。协程是python中的基本异步概念。 在python 3.8中,asyncio.wait()函数只能接收任务作为参数,但代码…

    2025年12月13日
    000
  • 运行时改变对象行为:多态性是如何实现的?

    多态性的妙处:在运行时修改对象行为 多态性是面向对象编程的重要特性,它允许我们在运行时改变对象的行为,以实现代码的灵活性。 理解“多态允许我们在运行时更改对象的行为” 让我们通过一个示例来理解多态性: // 定义一个动物接口interface Animal { void makeSound();}/…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信