一键导入
oat-project-new
Use when starting a spec-driven OAT project from scratch. Scaffolds a new project under PROJECTS_ROOT and sets it active.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when starting a spec-driven OAT project from scratch. Scaffolds a new project under PROJECTS_ROOT and sets it active.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Run when you need to evaluate agent instruction file coverage, quality, and drift. Produces a severity-rated analysis artifact. Run before oat-agent-instructions-apply to identify what needs improvement.
Run when you need to evaluate documentation structure, navigation, and coverage against the OAT docs app contract. Produces a severity-rated analysis artifact for oat-docs-apply.
Use when the user explicitly asks to continue discovery for an active spec-driven OAT project — e.g. "continue discovery", "run discovery", or confirms a previously offered discovery step. Do NOT auto-invoke for new ideas or quick-mode projects. Gathers requirements and context before spec/design.
Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
Use when design.md is complete and executable implementation tasks are needed. Breaks design into bite-sized TDD tasks in canonical plan.md format.
Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
| name | oat-project-new |
| version | 1.3.1 |
| description | Use when starting a spec-driven OAT project from scratch. Scaffolds a new project under PROJECTS_ROOT and sets it active. |
| argument-hint | <project-name> [--force] |
| disable-model-invocation | true |
| user-invocable | true |
| allowed-tools | Read, Write, Bash, Glob, Grep, AskUserQuestion |
Create a new OAT project directory, scaffold standard artifacts from .oat/templates/, and set activeProject in local config.
Print a phase banner once at start using horizontal separators, e.g.:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ OAT ▸ NEW PROJECT ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Before multi-step work, print step indicators, e.g.:
[0/3] Checking inherited git state...[1/3] Validating project name…[2/3] Scaffolding project artifacts…[3/3] Refreshing dashboard…Before scaffolding, surface the working tree state so unrelated changes don't get carried into the project workflow's bookkeeping commits.
git status --porcelain. If empty, continue silently to the next step..oat/sync/manifest.json or paths under .claude/, .cursor/, .codex/ appear in the list, note: "These are generated by oat sync (often by pnpm run worktree:init or oat-worktree-bootstrap-auto) and are typically safe to commit as chore: run sync."AskUserQuestion:
chore: run sync; otherwise ask the user for the commit message.Tool availability is not the same as interactivity. If
AskUserQuestionis unavailable but chat is available, present the three choices as a plain chat message and wait for the user's reply. Only fall back to "Proceed anyway" whenOAT_NON_INTERACTIVE=1is set or there is no user-response channel at all.
Do not advance past this gate without an explicit choice.
Resolve {PROJECTS_ROOT} (same order as other OAT skills):
PROJECTS_ROOT="${OAT_PROJECTS_ROOT:-$(oat config get projects.root 2>/dev/null || echo \".oat/projects/shared\")}"
PROJECTS_ROOT="${PROJECTS_ROOT%/}"
If not provided in $ARGUMENTS, ask the user for {project-name} (slug format: alphanumeric/dash/underscore only).
Use the CLI scaffolder:
oat project new "{project-name}" --mode spec-driven
Optional flags:
--force (non-destructive; only fills missing files/dirs, does not overwrite)--no-set-active--no-dashboardConfirm to the user:
{PROJECTS_ROOT}/{project-name}.oat/config.local.json (activeProject).oat/state.md (if enabled; generated and normally gitignored)Then explicitly instruct the user to run discovery next:
oat-project-discover{PROJECTS_ROOT}/{project-name}/ exists.oat/templates/*.md)activeProject in .oat/config.local.json points at the project path.oat/state.md is refreshed locally unless disabled; it is not staged or committed.