| name | goalcraft-skill |
|---|---|
| description | Craft executable /goal YAML from a brief and the target repo stack. Fills inputs, constraints, success_criteria, short_test, deliverables, needs_auth. Covers refactor, release, data-clean, writing, test-fix, dep-upgrade, and generic audits. Does not execute the goal. Use when /goal, write goal, goal YAML, brief-to-goal, agent task spec, Codex/Claude Code execution brief, Goalcraft, 写 goal、任务目标提示词、把需求写成 goal。 |
Goalcraft
TL;DR:读需求 + 探仓库 → 选模板 → 🔴 必要时 STOP → 只输出填实的 /goal YAML → 过 G1–G6 验收门。不执行任务、不写默认时限。
一句话需求 + 目标仓库实况 → 可粘贴 /goal。缺路径/命令/验收/权限时,先收成契约再交给执行会话。
资源分册:
templates.md · field-spec.md · stack-infer.md · examples.md
安装路径见 README「快速开始」(随 Agent Skills 兼容 runtime 而异,本文件不绑定某一目录)。
五条原则
| # | 原则 | 说明 |
|---|---|---|
| 01 | 只产 goal | 不替用户跑重构/发版/清洗 |
| 02 | 实例化 | 禁止留下 <placeholder>;命令来自目标仓 |
| 03 | 可观察成功 | success_criteria 必须机器或人工可核对 |
| 04 | 权限前置 | 外部系统写入 needs_auth;依赖权限步骤标 manual: |
| 05 | 默认无时限 | 不写 budget_limit_minutes,除非用户原文明确要求 |
工作流
探查 intent/stack → 选模板 → 🔴 CHECKPOINT → 输出 /goal YAML → 自检
Step 1 · 短探查
| Step | 输入 | 动作 | 输出 |
|---|---|---|---|
| 1 | 用户原文 | 抽目标、路径、禁止项(不抽时间预算) | intent |
| 2 | 目标仓库 | 按 stack-infer.md 推断包管理/命令/CI | stack |
| 3 | intent+stack | 选 templates.md 最近模板;禁止硬套无关场景 | template_id 或 generic |
| 4 | 外部系统 | CI/云/CMS/DB/token;未确认 → needs_auth | 列表或空 |
能推断的不要问;否则最多问 1–3 个关键 inputs。
Step 2 · 失败模式(按表执行)
| 触发 | 一线修复 | 仍失败兜底 |
|---|---|---|
| 无路径且多模块 | git status/近改目录猜 1 候选并确认 | target_paths: [] + constraints 写待确认 |
| 模板不清 | 通用骨架;title 用用户动词 | 禁止硬套发布/博文等 |
| 包管理不明 | lockfile→npm/pnpm/yarn;读 manifest scripts | short_test 用 README 命令 + 注明未确认 |
| short_test 命令不存在 | 换 stack-infer.md 实 script | 降级 ls/git status+人工冒烟;禁抄模板里的假命令 |
| 需外部权限未声明 | 补 needs_auth;success 写「鉴权后再跑」 | 权限步骤标 manual:,禁止假绿 |
仍有 <placeholder> | 回填或 TBD:字段 写入 constraints | 禁止交付含 <angle>;改问用户 |
| 用户未提时限 | 不写 budget_limit_minutes,不问「预算多久」 | 仅当用户原文含明确时限才原样写入 |
Step 3 · 🔴 CHECKPOINT · 🛑 STOP
任一条成立 → 先问用户,禁止静默交付:
target_paths/source/repo仍空且用户未确认候选- 发布/外部写入字段缺失(
release_type/ci_provider/ CMS / DB) - 「重构」与「改行为/加功能」冲突
- 多轨任务未标明先后 → 问清顺序,或默认写入 constraints(例:先审计后美化)
用户确认或说「你定/按默认」后进入输出。
禁止因「没给时间」而 STOP;禁止默认写入 budget_limit_minutes。
Step 4 · 输出格式(唯一交付)
默认只输出下列 YAML(用户要说明时附 ≤5 行):
/goal
title: <英文祈使句>
inputs:
repo: .
# 场景字段全部实值,禁止 <placeholder>
constraints:
- <硬约束>
# 禁止写 budget_limit_minutes(除非用户原文明确要求时限)
success_criteria:
- <可观察信号:测试绿 / tag / 文件 / CI>
common_failure_modes:
- <翻车点>
short_test:
- shell: |
<本仓真实命令>
deliverables:
- <PR / 文件 / 报告>
needs_auth: # 可省略
- <系统> — <原因>
字段语义 → field-spec.md。
交付验收门(输出前必须全过)
| 门禁 | 通过条件 | 失败动作 |
|---|---|---|
| G1 无占位 | YAML 中无 <...> angle 括号 | 回填或 🔴 问用户 |
| G2 命令真实 | short_test 每条命令能在目标仓 package.json/README/lockfile 对上号 | 按 stack-infer 重写 |
| G3 可观察 | success_criteria ≥1 条可核对(退出码/文件/tag/CI 名) | 改写为可观察句 |
| G4 权限诚实 | 需要外部权限的步骤有 needs_auth 或 manual: | 补声明,禁止假绿 shell |
| G5 无擅自时限 | 无 budget_limit_minutes,除非用户原文写了时限 | 删除该字段 |
| G6 只产 YAML | 正文默认只有 /goal 块(说明 ≤5 行) | 删掉长文解释 |
Step 5 · 场景选型
| 关键词 | 模板 |
|---|---|
| 重构 / 抽公共 / 无行为变化 | 1 |
| 发版 / changelog / tag / 制品 | 2 |
| 清洗 / 幂等 / quarantine / ETL | 3 |
| 简报→博文 / SEO | 4 |
| 修测试 / 红转绿 / flake | 5 |
| 升依赖 / lockfile / audit | 6 |
| 审计 / UI 检查 / 多 skill 串联 | 通用骨架 |
选型冲突时:用户动词优先于关键词表;同时命中多个模板 → 用通用骨架并在 constraints 写清阶段顺序。
骨架全文 → templates.md。
Step 6 · 写完自检
- 无
<angle>占位(除非用户要求留空) - 无
budget_limit_minutes(除非用户原文明确要求时限) - short_test 可跑或已标
needs_auth/manual - ≥1 条可机器核对的 success
- deliverables 可验收
- 行为不变任务写明禁改 public API / I/O / 对外契约
反例黑名单
| 禁止 | 正确做法 |
|---|---|
| 执行 goal 内重构/发版/清洗 | 只交 /goal YAML |
照抄模板里的 pnpm / dist / 虚构 CI | 按目标仓 stack-infer 填实命令 |
| 留下 angle 占位 | 填实或 🔴 先问 |
| 无路径默认全仓重构 | 确认 1 路径或 target_paths: [] |
| 「加功能」写成无行为变化重构 | 换骨架或改 title/constraints |
| 长文压过 YAML | 默认只输出 YAML |
省略 needs_auth 却写需权限的 shell | 声明权限;标 manual |
| 改 templates「顺便优化」语义 | 只实例化字段,不改模板库含义 |
| 擅自加时限 / 因无预算而追问 | 默认不写时限 |
使用提示(可附在 goal 末尾一行注释)
# 补齐 inputs → 交执行 agent;稳后可定时/Webhook。外部权限开头声明。
