.agents/skills/oat-project-import-plan/SKILL.md
Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
npx skillsauth add tkstang/open-agent-toolkit oat-project-import-planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Import a markdown plan from an external coding provider and normalize it into OAT project artifacts.
OAT MODE: Plan Import
Purpose: Preserve the original plan and generate a runnable canonical plan.md for OAT execution.
BLOCKED Activities:
ALLOWED Activities:
Self-Correction Protocol: If you catch yourself:
pNN-tNN tasks.Recovery:
references/imported-plan.md.plan.md in OAT structure.When executing this skill, provide lightweight progress feedback so the user can tell what’s happening after they confirm.
Print a phase banner once at start using horizontal separators, e.g.:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ OAT ▸ IMPORT PLAN ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Before multi-step work, print step indicators, e.g.:
[1/5] Resolving project + source plan…[2/5] Preserving imported source…[3/5] Normalizing plan to OAT task structure…[4/5] Updating project metadata + state…[5/5] Refreshing dashboard…PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
PROJECTS_ROOT="${OAT_PROJECTS_ROOT:-$(oat config get projects.root 2>/dev/null || echo ".oat/projects/shared")}"
PROJECTS_ROOT="${PROJECTS_ROOT%/}"
If no valid active project exists:
--project if provided, else ask user.TARGET_PROJECT_PATH="${PROJECTS_ROOT}/{project-name}".TARGET_PROJECT_PATH/state.md exists, set:
oat config set activeProject "$TARGET_PROJECT_PATH"
PROJECT_PATH="$TARGET_PROJECT_PATH"
oat project new "{project-name}" --mode import
PROJECT_PATH="$TARGET_PROJECT_PATH"
Inputs:
$ARGUMENTS--providerIf source path is not provided, discover likely recent plans first. The discovery script checks both provider plan directories and this repository's external plan directory by default:
.oat/repo/reference/external-plans/bash .agents/skills/oat-project-import-plan/scripts/find-recent-provider-plans.sh --hours 24
Optional: extend discovery roots via OAT_PROVIDER_PLAN_DIRS (colon-separated):
export OAT_PROVIDER_PLAN_DIRS="$HOME/custom-plans:$HOME/tmp/provider-plans"
Then ask user to either:
Validation rules:
.md (or user explicitly confirms nonstandard markdown extension).Create references directory if missing:
mkdir -p "$PROJECT_PATH/references"
cp "{source-path}" "$PROJECT_PATH/references/imported-plan.md"
Never overwrite an existing source snapshot without user confirmation. If already present, write timestamped copy:
references/imported-plan-YYYY-MM-DD-HHMM.mdCreate/update "$PROJECT_PATH/plan.md" using .oat/templates/plan.md and map imported content into the canonical structure. Apply oat-project-plan-writing invariants after mapping:
## Phase N### Task pNN-tNN (stable task IDs)## Reviews, ## Implementation Complete, ## ReferencesNormalization rules:
oat-project-plan-writing format (pNN-tNN).Set frontmatter in "$PROJECT_PATH/plan.md":
oat_status: completeoat_ready_for: oat-project-implementoat_phase: planoat_phase_status: completeoat_plan_source: importedoat_import_reference: references/imported-plan.mdoat_import_source_path: {source-path}oat_import_provider: {codex|cursor|claude|null}Set "$PROJECT_PATH/state.md" frontmatter:
oat_workflow_mode: importoat_workflow_origin: importedoat_phase: planoat_phase_status: completeoat_current_task: nulloat_project_state_updated: "{ISO 8601 UTC timestamp, e.g. 2026-03-10T14:30:00Z}"Import mode must leave the imported project as active for immediate execution.
Validate target project before writing pointer:
if [[ ! -f "$PROJECT_PATH/state.md" ]]; then
echo "Error: Project missing state.md: $PROJECT_PATH/state.md" >&2
exit 1
fi
oat config set activeProject "$PROJECT_PATH"
oat state refresh
If activeProject in local config already exists with a different path, treat this as a project switch and note it in output.
If missing, scaffold from template:
.oat/templates/implementation.md → "$PROJECT_PATH/implementation.md"Initialize pointer to first plan task ID.
Report:
oat-project-implement (sequential, default)oat-project-subagent-implement (parallel with autonomous review gates)references/imported-plan.md.plan.md generated with OAT task structure.plan.md metadata marks oat_plan_source: imported.state.md marks oat_workflow_mode: import.implementation.md is present and resumable.oat_plan_hill_phases left unset in frontmatter (deferred to oat-project-implement Step 2.5).## Planning Checklist items left unchecked (HiLL configuration deferred to implementation).activeProject in .oat/config.local.json points to the imported project..oat/state.md has been refreshed after pointer update.documentation
Use when OAT implementation changes and repository reference docs must be synchronized. Updates .oat/repo/reference to match current behavior.
business
Merge multiple analysis artifacts into a single coherent report with provenance tracking. Reads existing artifacts from /deep-research, /analyze, and /compare.
testing
Use when the user questions or suspects an agent claim is wrong. Adversarially gathers evidence to verify or refute the claim using the best sources available in the current environment.
tools
Use when prioritizing backlog work or evaluating a roadmap. Produces value-effort ratings, dependency mapping, and execution recommendations.