项目上下文设置Skill setup

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

DevOps 0 次安装 7 次浏览 更新于 3/18/2026
名称 setup
描述 搭建持久项目上下文 — 产品定义、技术栈和指南。通过访谈您的项目并生成所有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.json`、`pyproject.toml`、`Cargo.toml`、`go.mod`、`build.gradle`、`pom.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: 创建上下文目录

```bash
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): 搭建项目上下文文件"