with one click
journey-test-assistant
[UDS] 从项目描述生成连贯的用户旅程测试计划(TESTPLAN)与 E2E 骨架。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
[UDS] 从项目描述生成连贯的用户旅程测试计划(TESTPLAN)与 E2E 骨架。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
[UDS] 引導 CI/CD 管線設計、配置和優化
Guide CI/CD pipeline design, configuration, and optimization. Use when: setting up pipelines, optimizing build times, configuring deployment stages. Keywords: CI/CD, pipeline, GitHub Actions, deployment, build.
在编写规格前进行结构化 AI 辅助头脑风暴。 使用时机:功能规划、创意发想、问题定义。 关键字:brainstorm, persona, multi-critic, HMW, SCAMPER, 头脑风暴, 发想。
[UDS] 在撰寫規格前進行結構化 AI 輔助腦力激盪
[UDS] Structured AI-assisted brainstorming before spec creation
[UDS] 从规格衍生 BDD 场景、TDD 骨架或 ATDD 表格
| name | journey-test-assistant |
| source | ../../../../skills/journey-test-assistant/SKILL.md |
| source_version | 1.0.0 |
| translation_version | 1.0.0 |
| last_synced | "2026-06-02T00:00:00.000Z" |
| source_hash | 439f49327b75 |
| status | current |
| scope | partial |
| description | [UDS] 从项目描述生成连贯的用户旅程测试计划(TESTPLAN)与 E2E 骨架。 |
| allowed-tools | Read, Write, Grep, Glob |
| argument-hint | [项目描述 | --analyze | --archetype A1|A2|A3] |
从项目描述生成连贯的用户旅程测试计划(TESTPLAN-NNN.md)与对应的 E2E 骨架,让每个新项目从第一天起就拥有完整的测试旅程。
| 维度 | /e2e | /journey-test |
|---|---|---|
| 组织单位 | 单一 XSPEC/AC | 跨 Story 的用户旅程 |
| 测试结构 | 隔离、独立 | 连贯、状态共享 |
| 产物 | *.spec.ts 骨架 | TESTPLAN.md + *.journey.spec.ts |
| 触发时机 | 功能完成后 | 项目创建时(Journey-First) |
| 检测目标 | 单一 AC 是否正确 | 跨步骤状态传递是否连贯 |
输入:项目描述 / 现有 TESTPLAN / --analyze
↓
Phase 1:定义 Persona
分析项目描述 → 识别所有用户角色 → 定义 Actor/Role/Key Permissions
↓
Phase 2:设计旅程地图
列出主要业务目标 → 拆解为 T-NNN 分组 → 声明依赖链
↓
Phase 3:生成 TESTPLAN
按格式输出 test-plans/TESTPLAN-001.md(含 Personas、步骤、依赖图)
↓
Phase 4:生成 E2E 骨架
从 TESTPLAN T-NNN 生成 *.journey.spec.ts(含 skipIf + 共享 state)
从项目描述生成完整的 TESTPLAN + E2E 骨架。
/journey-test "电商平台,需要 buyer/seller/admin 三个角色"
产物:
test-plans/TESTPLAN-001.md:含 Personas、T-000 环境重置、T-001~T-NNN 步骤分组、执行顺序依赖图src/e2e/journey/main-flow.journey.spec.ts:含 describe.skipIf + 共享 state + T-NNN 对应的完整骨架扫描现有测试,找出旅程覆盖缺口。
/journey-test --analyze
执行步骤:
test-plans/TESTPLAN-NNN.md(若存在)src/e2e/ 下所有 *.journey.spec.ts 和 *.journey.e2e.test.ts使用预设旅程模板,适合已知类型的项目快速启动。
/journey-test --archetype A1 # Spec-driven 旅程
/journey-test --archetype A2 # UI-driven 旅程
/journey-test --archetype A3 # Brownfield 旅程
| Archetype | 模板 | 适用场景 |
|---|---|---|
| A1 | Spec-driven | 需求 → Spec → Code → Test,适合 API/Backend 项目 |
| A2 | UI-driven | 设计稿 → UI → 视觉回归,适合前端/全栈项目 |
| A3 | Brownfield | 现有代码 → 分析 → 重构验证,适合既有项目补测试 |
以下为完整的 TESTPLAN 模板,展示所有必要区段:
# TESTPLAN-001 <ProjectName> 主线旅程
## Personas
| Actor | Role | Key Permissions |
|---------------|---------------|------------------------------|
| platform_admin | Platform Admin | 创建 Org、管理用户、查看所有资源 |
| org_member | Org Member | 读取项目、执行 Pipeline |
## Environment
- BASE_URL:`http://localhost:3000`(本机)/ `$JOURNEY_BASE_URL`(CI)
- 验证命令:`curl $BASE_URL/health`
- 必要账号:`ADMIN_EMAIL`、`ADMIN_PASSWORD` 环境变量
## T-000 环境重置(optional)
前置条件:无
depends_on:无
| 步骤 | 操作 | 预期结果 |
|---------|-----------------------------------|-----------------|
| T-000-1 | [API] GET /health | 返回 200 OK |
| T-000-2 | [CHECK] 数据库连接正常 | 无错误日志 |
## T-001 Platform Admin 登录
前置条件:环境正常运行(T-000 通过)
depends_on:T-000
| 步骤 | 操作 | 预期结果 |
|---------|---------------------------------------------|--------------------------|
| T-001-1 | [API] POST /api/auth/login(admin 账号) | 返回 200 + authToken |
| T-001-2 | [CHECK] authToken 存入共享 state | let authToken 有值 |
## T-010 主要功能操作
前置条件:authToken 已取得(T-001 通过)
depends_on:T-001
| 步骤 | 操作 | 预期结果 |
|---------|---------------------------------------------|--------------------------|
| T-010-1 | [API] POST /api/resources(带 authToken) | 返回 201 + resourceId ★ |
| T-010-2 | [CHECK] resourceId 存入共享 state | let resourceId 有值 |
## 执行顺序依赖图
T-000 → T-001 → T-010
生成的骨架展示三个核心模式:describe.skipIf 环境保护、共享 let 状态、T-NNN 标识符对应。
import { describe, it, expect } from "vitest"
// Journey E2E:需要真实后端,不设置 JOURNEY_BASE_URL 则全部 skip
const BASE_URL = process.env.JOURNEY_BASE_URL || ""
describe.skipIf(!BASE_URL)("Platform Admin Journey — T-001 → T-010", () => {
// 共享 state:每个步骤从前一步骤的结果取值
let authToken: string
let resourceId: string
it("T-001: Platform Admin 登录并取得 authToken", async () => {
const res = await fetch(`${BASE_URL}/api/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: process.env.ADMIN_EMAIL,
password: process.env.ADMIN_PASSWORD,
}),
})
expect(res.status, "T-001 failed: login should return 200").toBe(200)
const data = await res.json()
expect(data.token, "T-001 failed: token should be present").toBeTruthy()
authToken = data.token // ← 传递给后续步骤
})
it("T-010: 执行主要操作(depends on T-001)", async () => {
// 如果 T-001 失败,authToken 为 undefined,此步骤的错误信息会清楚说明
expect(authToken, "T-010 precondition failed: authToken from T-001 is missing").toBeTruthy()
const res = await fetch(`${BASE_URL}/api/resources`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${authToken}`,
},
body: JSON.stringify({ name: "journey-test-resource" }),
})
expect(res.status, `T-010 failed: expected 201, got ${res.status}`).toBe(201)
const data = await res.json()
resourceId = data.id // ← 传递给后续步骤
})
})
完成后建议:
TESTPLAN 与 Journey E2E 骨架已生成。建议下一步:
- 执行
/e2e生成各功能的 AC 层测试(补充旅程测试的细节覆盖)- 执行
/atdd定义各 T-NNN 步骤对应的验收条件- 执行
/journey-test --analyze定期检查自动化覆盖缺口
/e2e(AC 层测试)、/atdd(验收条件定义)