项目上下文设置Skill setup

该技能用于自动化创建和管理软件开发项目的上下文文档,包括产品定义、技术栈和指南,通过用户访谈和分析现有代码库,为Maestro代理提供项目理解支持。关键词:项目设置、上下文搭建、自动化工具、DevOps、软件开发、项目初始化。

DevOps 0 次安装 0 次浏览 更新于 3/18/2026

name: setup description: 搭建持久项目上下文 — 产品定义、技术栈和指南。通过访谈您的项目并生成所有Maestro代理参考的上下文文件。 argument-hint: “[–reset]” allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion disable-model-invocation: true

设置 — 项目上下文搭建

灵感来自 Conductor。适应于Maestro的架构。

通过访谈用户创建持久项目上下文文档,供所有Maestro代理参考以深入了解项目。

参数

$ARGUMENTS

  • --reset: 删除所有现有上下文文件并重新开始。
  • 默认(无参数):运行设置访谈。如果上下文已存在,提供更新或跳过选项。

步骤 1: 处理 --reset

如果 $ARGUMENTS 包含 --reset

  1. 检查 .maestro/context/ 是否存在
  2. 如果存在,与用户确认:
    AskUserQuestion(
      questions: [{
        question: "这将删除 .maestro/context/ 中的所有项目上下文文件。确定吗?",
        header: "重置上下文",
        options: [
          { label: "是,重置", description: "删除所有上下文文件并重新开始" },
          { label: "取消", description: "保留现有上下文" }
        ],
        multiSelect: false
      }]
    )
    
  3. 如果确认:rm -rf .maestro/context/ 并报告 “上下文已重置。运行 /setup 创建新上下文。”
  4. 停止。

步骤 2: 检查现有上下文

Glob(pattern: ".maestro/context/*.md")

如果上下文文件已存在,询问用户:

AskUserQuestion(
  questions: [{
    question: "项目上下文已存在。您想做什么?",
    header: "现有上下文",
    options: [
      { label: "更新", description: "重新运行设置并覆盖现有文件" },
      { label: "查看", description: "显示当前上下文文件并退出" },
      { label: "取消", description: "保持现有上下文不变" }
    ],
    multiSelect: false
  }]
)

在查看时:读取并显示 .maestro/context/ 中的每个文件,然后停止。 在取消时:停止。 在更新时:继续到步骤 3。

步骤 3: 检测项目成熟度

将项目分类为 Brownfield(现有)或 Greenfield(新)。

Brownfield 指标(按顺序检查,第一个匹配即停):

  1. package.jsonpyproject.tomlCargo.tomlgo.modbuild.gradlepom.xml 存在
  2. src/app/lib/ 目录包含代码文件
  3. .git 目录存在且有提交(git log --oneline -1 成功)

Greenfield:未找到上述任何指标。

对于 Brownfield 项目

  1. 宣布:“检测到现有项目。在提问前我会分析它。”
  2. 读取关键文件以推断上下文:
    • README.md(如果存在)— 项目目的
    • package.json / pyproject.toml / Cargo.toml / go.mod — 依赖和技术栈
    • CLAUDE.md(如果存在)— 现有约定
  3. 存储推断以供后续问题使用。

对于 Greenfield 项目

  1. 宣布:“检测到新项目。我将帮助您从头定义项目上下文。”

步骤 4: 创建上下文目录

mkdir -p .maestro/context

步骤 5: 产品定义访谈

生成 product.md — 项目是什么、为谁服务以及做什么。

对于 Brownfield:从步骤 3 分析中预填答案。请用户确认或纠正。

依次提问(一次一个问题)。最多限制为 3 个问题。

问题 1 — 项目目的:

AskUserQuestion(
  questions: [{
    question: "这个项目做什么?(一句话)",
    header: "产品定义",
    options: [
      { label: "{推断的目的如果 brownfield}", description: "基于 README/package.json 分析" },
      { label: "其他", description: "输入您自己的描述" }
    ],
    multiSelect: false
  }]
)

对于 greenfield,省略推断选项 — 直接问开放式问题。

问题 2 — 目标用户:

AskUserQuestion(
  questions: [{
    question: "主要用户是谁?",
    header: "目标用户",
    options: [
      { label: "开发者", description: "库、CLI 工具或面向开发者的 API" },
      { label: "最终用户", description: "Web 应用、移动应用或面向消费者的产品" },
      { label: "内部团队", description: "内部工具、管理仪表板或运维工具" },
      { label: "其他", description: "输入您自己的" }
    ],
    multiSelect: false
  }]
)

问题 3 — 关键功能(可选 — 如果 brownfield 有清晰的 README 则跳过):

AskUserQuestion(
  questions: [{
    question: "2-3 个最重要的功能或能力是什么?",
    header: "关键功能",
    options: [
      { label: "从分析中自动生成", description: "我将从代码库中推断" },
      { label: "其他", description: "输入您自己的列表" }
    ],
    multiSelect: false
  }]
)

草稿并写入 product.md

# 产品定义

## 目的
{用户对 Q1 的回答}

## 目标用户
{用户对 Q2 的回答}

## 关键功能
{用户对 Q3 的回答,或推断列表}

写入 .maestro/context/product.md

步骤 6: 技术栈访谈

生成 tech-stack.md — 语言、框架、工具。

对于 Brownfield:从配置文件推断技术栈(步骤 3)。展示以供确认。

AskUserQuestion(
  questions: [{
    question: "这是您的技术栈吗?

{推断的栈摘要}",
    header: "技术栈",
    options: [
      { label: "是,正确", description: "使用检测到的技术栈" },
      { label: "需要更改", description: "让我更正或添加" },
      { label: "其他", description: "手动输入完整技术栈" }
    ],
    multiSelect: false
  }]
)

对于 Greenfield:直接询问:

AskUserQuestion(
  questions: [{
    question: "这个项目将使用什么技术栈?(语言、框架、数据库等)",
    header: "技术栈",
    options: [
      { label: "其他", description: "输入您的技术栈" }
    ],
    multiSelect: false
  }]
)

草稿并写入 tech-stack.md

# 技术栈

## 语言
- {语言 1}
- {语言 2}

## 框架
- {框架 1}
- {框架 2}

## 工具与基础设施
- 包管理器:{管理器}
- 数据库:{数据库,如果适用}
- CI/CD:{ci,如果适用}

写入 .maestro/context/tech-stack.md

步骤 7: 指南访谈

生成 guidelines.md — 编码约定、设计原则、非功能需求。

AskUserQuestion(
  questions: [{
    question: "这个项目有任何特定的指南或原则吗?",
    header: "项目指南",
    options: [
      { label: "从分析中自动生成", description: "我将从 CLAUDE.md、linter 配置和约定中推断" },
      { label: "TDD 优先", description: "测试驱动开发,高覆盖率" },
      { label: "快速行动", description: "快速发布,后续迭代" },
      { label: "安全优先", description: "输入验证、审计日志、安全默认值" },
      { label: "其他", description: "输入您自己的指南" }
    ],
    multiSelect: true
  }]
)

草稿并写入 guidelines.md

# 项目指南

## 开发原则
- {选择的原则}

## 约定
- {从 CLAUDE.md 或用户输入推断}

## 非功能需求
- {性能、安全、可访问性等}

写入 .maestro/context/guidelines.md

步骤 8: 总结与提交

  1. 显示所有生成文件的摘要:
## 项目上下文已创建

**文件**:
- `.maestro/context/product.md` — 产品定义
- `.maestro/context/tech-stack.md` — 技术栈
- `.maestro/context/guidelines.md` — 项目指南

这些文件将自动注入到所有 Maestro 代理上下文中。

更新:`/setup`
重置:`/setup --reset`
查看:`/setup` → 查看
  1. 提交上下文文件:
git add .maestro/context/
git commit -m "chore(setup): 搭建项目上下文文件"