[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MA3C863FD25908DXDQTW41":3,"skill-same:01M6MA3C863FD25908DXDQTW41":106},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":53,"linkOnly":54,"markdownContent":55,"markdownBody":56,"frontMatter":57,"refName":64,"commitSha":65,"skillDirectory":66,"forksCount":67,"repositoryHtmlUrl":68,"repositoryHomepageUrl":69,"ownerHtmlUrl":70,"ownerBlogUrl":71,"ownerDescription":72,"updatedAt":73,"install":74,"resources":87},"01M6MA3C863FD25908DXDQTW41","fine-tuning-openvla-oft",null,"Fine-tunes and evaluates OpenVLA-OFT and OpenVLA-OFT+ policies for robot action generation with continuous action heads, LoRA adaptation, and FiLM conditioning on LIBERO simulation and ALOHA real-world setups. Use when reproducing OpenVLA-OFT paper results, training custom VLA action heads (L1 or diffusion), deploying server-client inference for ALOHA, or debugging normalization, LoRA merge, and cross-GPU issues.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1566,"MIT","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"fine tuning openvla oft","OpenVLA","tuning","fine tuning","fastapi","custom","for","action","uvicorn","WandB","ALOHA","Accelerate","adaptation","chunking","world","robotics","use","merge","simulation","Transformers","LoRA","Fine-Tuning","actions","server","multimodal","issues","debugging","deployment","training","2026-11-10 10:12:30",false,"---\nname: fine-tuning-openvla-oft\ndescription: Fine-tunes and evaluates OpenVLA-OFT and OpenVLA-OFT+ policies for robot action generation with continuous action heads, LoRA adaptation, and FiLM conditioning on LIBERO simulation and ALOHA real-world setups. Use when reproducing OpenVLA-OFT paper results, training custom VLA action heads (L1 or diffusion), deploying server-client inference for ALOHA, or debugging normalization, LoRA merge, and cross-GPU issues.\nlicense: MIT\nmetadata:\n  version: 1.0.0\n  category: multimodal-and-emerging\n  maintainer: Kalaris Labs\n  tags: OpenVLA, OpenVLA-OFT, VLA, Robotics, Fine-Tuning, LIBERO, ALOHA, LoRA, FiLM, Action Chunking, Deployment, Continuous Actions\n  dependencies: torch==2.2.0, transformers>=4.40.0, peft==0.11.1, draccus==0.8.0, accelerate>=0.25.0, wandb>=0.16.0, fastapi>=0.100.0, uvicorn>=0.24.0, tensorflow==2.15.0, robosuite==1.4.0\n---\n\n# OpenVLA-OFT\n\nFine-tuning and evaluation workflows for OpenVLA-OFT and OpenVLA-OFT+ from the official `openvla-oft` codebase. Covers blank-machine setup plus LoRA-based adaptation of OpenVLA for robot action generation with continuous action prediction heads.\n\n## Quick start\n\nClone the public repo, follow the official setup, then evaluate a pretrained LIBERO checkpoint:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft.git\ncd openvla-oft\npython experiments\u002Frobot\u002Flibero\u002Frun_libero_eval.py \\\n  --pretrained_checkpoint moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial \\\n  --task_suite_name libero_spatial \\\n  --center_crop True \\\n  --num_trials_per_task 50 \\\n  --seed 7\n```\n\n## Core concepts\n\n**What OpenVLA-OFT changes**: Standard OpenVLA tokenizes continuous actions into discrete bins, losing precision. OFT replaces this with dedicated continuous action heads (L1 regression or diffusion) while keeping the VLA backbone frozen and adapting via LoRA.\n\n**OFT vs OFT+ variants**:\n\n| Variant | FiLM | Images | Typical use |\n|---------|------|--------|-------------|\n| OFT | Off | 2 (front + wrist) | LIBERO simulation |\n| OFT+ | On | 3 (high + left + right wrist) | ALOHA real-world |\n\n**Key architecture choices**:\n- **LoRA adaptation**: Rank-32 LoRA on VLA backbone (no full fine-tuning needed)\n- **Continuous actions**: L1 regression head (default) or diffusion head\n- **FiLM conditioning**: Feature-wise Linear Modulation for stronger language grounding in OFT+\n- **Multi-image input**: Configurable 2 or 3 camera streams via `num_images_in_input`\n\n## Compute requirements\n\n| Task | GPU | VRAM | Notes |\n|------|-----|------|-------|\n| LIBERO evaluation | 1x A100\u002FA40 | ~16 GB | Single GPU |\n| ALOHA evaluation | 1x A100\u002FA40 | ~18 GB | Single GPU |\n| LIBERO fine-tuning | 8x A100 | ~27 GB\u002FGPU | Paper default |\n| ALOHA fine-tuning (OFT+) | 8x A100 | ~35 GB\u002FGPU | FiLM + 3 images |\n| LoRA merge | 1x any GPU | ~16 GB | One-time step |\n\n## Expected performance benchmarks\n\nOfficial results (paper setup, seed=7, 50 trials per task):\n\n| Task Suite | Task-Specific | Combined Policy | Notes |\n|-----------|--------------|-----------------|-------|\n| LIBERO-Spatial | 97.2% | 96.8% | Easiest suite |\n| LIBERO-Object | 97.4% | 97.0% | Object manipulation |\n| LIBERO-Goal | 95.8% | 95.4% | May peak at 50k-100k steps |\n| LIBERO-10 | 98.0% | 98.0% | Long-horizon tasks |\n| **Average** | **97.1%** | **96.8%** | Near-equivalent |\n\nReproduction notes: results are tied to Python 3.10.14, PyTorch 2.2.0, NVIDIA A100, and custom Transformers fork.\n\n## When to use vs alternatives\n\n**Use OpenVLA-OFT when:**\n- The target task is robot action generation with visual and language conditioning\n- LoRA-based adaptation of `openvla\u002Fopenvla-7b` is preferred\n- You need official LIBERO or ALOHA workflows from the OpenVLA-OFT paper\n- You want continuous action heads (L1 regression or diffusion) instead of tokenized actions\n\n**Use alternatives when:**\n- You need a different VLA architecture (use `fine-tuning-serving-openpi` for pi0\u002Fpi0.5 models)\n- You need the NVIDIA Cosmos Policy stack (use `evaluating-cosmos-policy`)\n- You need general LLM fine-tuning without robot action heads\n\n---\n\n## Workflow 1: Set up environment\n\nCopy this checklist and track progress:\n\n```text\nSetup Progress:\n- [ ] Step 1: Create conda env and install PyTorch\n- [ ] Step 2: Install openvla-oft package in editable mode\n- [ ] Step 3: Install FlashAttention2\n- [ ] Step 4: Verify critical versions\n```\n\n**Step 1: Create conda env and clone repo**\n\n```bash\nconda create -n openvla-oft python=3.10 -y\nconda activate openvla-oft\ngit clone https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft.git\ncd openvla-oft\npip3 install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0\npip3 install robosuite==1.4.0\n```\n\n**Step 2: Install package**\n\n```bash\npip install -e .\n```\n\n**Step 3: Install FlashAttention2**\n\n```bash\npip install packaging ninja\npip install \"flash-attn==2.5.5\" --no-build-isolation\n```\n\n**Step 4: Verify versions**\n\n```python\nimport torch, transformers, peft\nprint(f\"PyTorch: {torch.__version__}\")         # Expected: 2.2.0\nprint(f\"Transformers: {transformers.__version__}\")\nprint(f\"PEFT: {peft.__version__}\")             # Expected: 0.11.1\n```\n\n---\n\n## Workflow 2: Evaluate pretrained checkpoints on LIBERO\n\n```text\nLIBERO Eval Progress:\n- [ ] Step 1: Install LIBERO dependencies\n- [ ] Step 2: Choose checkpoint and task suite\n- [ ] Step 3: Run evaluation\n- [ ] Step 4: Parse and validate results\n```\n\n**Step 1: Install LIBERO**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FLifelong-Robot-Learning\u002FLIBERO.git\npip install -e LIBERO\npip install -r experiments\u002Frobot\u002Flibero\u002Flibero_requirements.txt\n```\n\n**Step 2: Choose checkpoint**\n\n| Checkpoint | Task suite |\n|-----------|------------|\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial` | `libero_spatial` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-object` | `libero_object` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-goal` | `libero_goal` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-10` | `libero_10` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial-object-goal-10` | Combined |\n\n**Step 3: Run evaluation**\n\n```bash\npython experiments\u002Frobot\u002Flibero\u002Frun_libero_eval.py \\\n  --pretrained_checkpoint moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial \\\n  --task_suite_name libero_spatial \\\n  --center_crop True \\\n  --num_trials_per_task 50 \\\n  --seed 7\n```\n\n**Step 4: Parse results**\n\n```python\nimport re\n\ndef parse_libero_log(log_path):\n    \"\"\"Extract per-task success rates from LIBERO eval log.\"\"\"\n    with open(log_path) as f:\n        content = f.read()\n    matches = re.findall(r\"Task (.+?): (\\d+)\u002F(\\d+) successes\", content)\n    for task, successes, trials in matches:\n        rate = int(successes) \u002F int(trials)\n        print(f\"  {task}: {rate:.0%} ({successes}\u002F{trials})\")\n\nparse_libero_log(\"experiments\u002Flogs\u002Flatest.log\")\n```\n\n---\n\n## Workflow 3: Fine-tune on LIBERO\n\n> **Detailed reference**: See [references\u002Flibero-workflow.md](references\u002Flibero-workflow.md) for the full LIBERO setup, checkpoint selection strategy, and LoRA merge instructions.\n\n```text\nLIBERO Fine-Tune Progress:\n- [ ] Step 1: Prepare RLDS dataset\n- [ ] Step 2: Launch torchrun with OFT defaults\n- [ ] Step 3: Evaluate intermediate and final checkpoints\n- [ ] Step 4: Merge LoRA for deployment if needed\n```\n\n**Step 1: Dataset**\n\nUse RLDS datasets: `libero_spatial_no_noops`, `libero_object_no_noops`, `libero_goal_no_noops`, `libero_10_no_noops`.\n\n**Step 2: Launch training**\n\n```bash\ntorchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts\u002Ffinetune.py \\\n  --vla_path openvla\u002Fopenvla-7b \\\n  --data_root_dir \u002FPATH\u002FTO\u002FRLDS\u002FDATASETS\u002F \\\n  --dataset_name libero_spatial_no_noops \\\n  --run_root_dir \u002FYOUR\u002FCHECKPOINTS\u002F \\\n  --use_l1_regression True \\\n  --use_diffusion False \\\n  --use_film False \\\n  --num_images_in_input 2 \\\n  --use_proprio True \\\n  --batch_size 8 \\\n  --learning_rate 5e-4 \\\n  --num_steps_before_decay 100000 \\\n  --max_steps 150005 \\\n  --save_freq 10000 \\\n  --save_latest_checkpoint_only False \\\n  --image_aug True \\\n  --lora_rank 32 \\\n  --wandb_entity YOUR_WANDB_ENTITY \\\n  --wandb_project YOUR_WANDB_PROJECT\n```\n\n**Step 3: Evaluate checkpoints**\n\nEvaluate 50k, 100k, and 150k checkpoints — LIBERO-Goal may peak earlier than other suites. Keep best checkpoint per suite by actual task success, not only training loss.\n\n**Step 4: Merge LoRA**\n\n```bash\npython vla-scripts\u002Fmerge_lora_weights_and_save.py \\\n  --base_checkpoint openvla\u002Fopenvla-7b \\\n  --lora_finetuned_checkpoint_dir \u002FPATH\u002FTO\u002FCHECKPOINT_DIR\n```\n\n---\n\n## Workflow 4: Train and evaluate OpenVLA-OFT+ on ALOHA\n\n> **Detailed reference**: See [references\u002Faloha-workflow.md](references\u002Faloha-workflow.md) for the full ALOHA server-client setup, data preprocessing, dataset registration, and troubleshooting.\n\n```text\nALOHA Progress:\n- [ ] Step 1: Preprocess raw ALOHA demonstrations\n- [ ] Step 2: Convert to RLDS and register dataset configs\n- [ ] Step 3: Fine-tune OFT+ with FiLM and 3 images\n- [ ] Step 4: Start VLA server on GPU machine\n- [ ] Step 5: Run client-side robot evaluation\n```\n\n**Step 1: Preprocess raw data**\n\n```bash\npython experiments\u002Frobot\u002Faloha\u002Fpreprocess_split_aloha_data.py \\\n  --dataset_path \u002Fpath\u002Fto\u002Faloha_raw\u002Ftask_name\u002F \\\n  --out_base_dir \u002Fpath\u002Fto\u002Faloha_preprocessed\u002F \\\n  --percent_val 0.05\n```\n\n**Step 2: Register RLDS dataset**\n\nAdd entries in:\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Fconfigs.py`\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Ftransforms.py`\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Fmixtures.py`\n\nSet ALOHA constants in `prismatic\u002Fvla\u002Fconstants.py`:\n\n```python\n# Expected defaults for ALOHA\nNUM_ACTIONS_CHUNK = 25        # Match control frequency (25 Hz)\nACTION_DIM = 14               # 7 joints x 2 arms\nPROPRIO_DIM = 14\nACTION_PROPRIO_NORMALIZATION_TYPE = \"BOUNDS\"  # Absolute joint angles\n```\n\n**Step 3: Fine-tune OFT+**\n\n```bash\ntorchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts\u002Ffinetune.py \\\n  --vla_path openvla\u002Fopenvla-7b \\\n  --data_root_dir \u002FPATH\u002FTO\u002FRLDS\u002FDATASETS\u002F \\\n  --dataset_name aloha_task_name \\\n  --run_root_dir \u002FYOUR\u002FCHECKPOINTS\u002F \\\n  --use_l1_regression True \\\n  --use_diffusion False \\\n  --use_film True \\\n  --num_images_in_input 3 \\\n  --use_proprio True \\\n  --batch_size 4 \\\n  --learning_rate 5e-4 \\\n  --num_steps_before_decay 50000 \\\n  --max_steps 100005 \\\n  --use_val_set True \\\n  --val_freq 10000 \\\n  --save_freq 10000 \\\n  --lora_rank 32\n```\n\n**Step 4: Start VLA server (GPU machine)**\n\n```bash\npython vla-scripts\u002Fdeploy.py \\\n  --pretrained_checkpoint \u002FPATH\u002FTO\u002FFINETUNED\u002FCHECKPOINT\u002F \\\n  --use_l1_regression True \\\n  --use_film True \\\n  --num_images_in_input 3 \\\n  --use_proprio True \\\n  --center_crop True \\\n  --unnorm_key aloha_task_name\n```\n\nServer listens on `http:\u002F\u002F\u003Cserver-ip>:8777\u002Fact`.\n\n**Step 5: Run client evaluation**\n\n```bash\npython experiments\u002Frobot\u002Faloha\u002Frun_aloha_eval.py \\\n  --center_crop True \\\n  --num_open_loop_steps 25 \\\n  --use_vla_server True \\\n  --vla_server_url http:\u002F\u002F\u003CSERVER_IP>:8777 \\\n  --num_rollouts_planned 50 \\\n  --max_steps 1500\n```\n\n---\n\n## Critical invariants\n\nThese flags **must** be consistent between training and inference. Mismatches cause silent failures:\n\n| Area | Required consistency | Failure if mismatched |\n|------|---------------------|----------------------|\n| Action head | `use_l1_regression` vs `use_diffusion` | Wrong head loading, invalid actions |\n| FiLM | `use_film` across train\u002Feval\u002Fdeploy | Reduced language grounding |\n| Image streams | `num_images_in_input` parity | Shape mismatch or performance drop |\n| Proprio | `use_proprio` parity | State conditioning mismatch |\n| LoRA rank | `lora_rank` parity | Adapter loading errors |\n| Crop | `image_aug=True` in train → `center_crop=True` in eval | Significant success-rate drop |\n| Action chunk | `num_open_loop_steps` ≈ `NUM_ACTIONS_CHUNK` | Latency\u002Fsuccess tradeoff shifts |\n| Unnorm key | `unnorm_key` present in checkpoint stats | Bad action scale |\n\nQuick validation:\n\n```python\n# Verify config parity before long eval runs\ntrain_flags = {\"use_film\": False, \"num_images\": 2, \"use_proprio\": True, \"lora_rank\": 32}\neval_flags  = {\"use_film\": False, \"num_images\": 2, \"use_proprio\": True, \"lora_rank\": 32}\nfor k in train_flags:\n    assert train_flags[k] == eval_flags[k], f\"Mismatch: {k}: {train_flags[k]} vs {eval_flags[k]}\"\nprint(\"All flags consistent\")\n```\n\n---\n\n## Common issues\n\n**Issue: Action quality drops after moving checkpoints across GPU types**\n\nFix: re-merge LoRA adapter on the downstream device:\n\n```bash\npython vla-scripts\u002Fmerge_lora_weights_and_save.py \\\n  --base_checkpoint openvla\u002Fopenvla-7b \\\n  --lora_finetuned_checkpoint_dir \u002FPATH\u002FTO\u002FCHECKPOINT_DIR\n```\n\n**Issue: Wrong action scale or failed un-normalization**\n\nFix: check `--unnorm_key` matches dataset statistics in checkpoint:\n\n```python\nimport torch\nckpt = torch.load(\"checkpoint\u002Fmodel.pt\", map_location=\"cpu\")\nprint(\"Available norm keys:\", list(ckpt.get(\"norm_stats\", {}).keys()))\n```\n\n**Issue: Eval success unexpectedly low**\n\nFix: verify all invariants in the table above. Most common culprit: missing `center_crop=True` when trained with `image_aug=True`.\n\n**Issue: LIBERO eval crashes with `EOFError` asking for dataset path**\n\nFix: set `LIBERO_CONFIG_PATH` and write a non-interactive config before headless eval.\n\n**Issue: ALOHA client ROS import fails with `libffi` symbol errors**\n\nFix: `conda install -c conda-forge libffi`\n\n**Issue: `flash-attn` install fails**\n\nFix: export `TMPDIR` and `PIP_CACHE_DIR` to the same filesystem, retry with `--no-cache-dir`.\n\n**Issue: EGL teardown logs show `EGL_NOT_INITIALIZED`**\n\nFix: treat as teardown noise unless exit code is non-zero. Set EGL env vars:\n\n```bash\nexport MUJOCO_GL=egl PYOPENGL_PLATFORM=egl\nexport CUDA_VISIBLE_DEVICES=0 MUJOCO_EGL_DEVICE_ID=0\n```\n\n---\n\n## For HPC\u002Fcluster users\n\nOn Slurm clusters, route caches to scratch to avoid filling `\u002Fhome` quota:\n\n```bash\nexport HF_HOME=\u002Fscratch\u002F$USER\u002F.cache\u002Fhuggingface\nexport XDG_CACHE_HOME=\u002Fscratch\u002F$USER\u002F.cache\nexport PIP_CACHE_DIR=\u002Fscratch\u002F$USER\u002F.cache\u002Fpip\nexport TMPDIR=\u002Fscratch\u002F$USER\u002Ftmp\n```\n\nAvoid stacking cluster Python modules when using conda. Typically `module load cuda` is sufficient.\n\n---\n\n## Advanced topics\n\n**Paper summary and checkpoints**: See [references\u002Fpaper-and-checkpoints.md](references\u002Fpaper-and-checkpoints.md)\n**Detailed LIBERO workflow**: See [references\u002Flibero-workflow.md](references\u002Flibero-workflow.md)\n**Detailed ALOHA workflow**: See [references\u002Faloha-workflow.md](references\u002Faloha-workflow.md)\n**Config map and troubleshooting matrix**: See [references\u002Fconfig-troubleshooting.md](references\u002Fconfig-troubleshooting.md)\n\n## Resources\n\n- Project website: https:\u002F\u002Fopenvla-oft.github.io\u002F\n- Paper: https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.19645\n- Repository: https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft\n- RLDS builder: https:\u002F\u002Fgithub.com\u002Fmoojink\u002Frlds_dataset_builder\n\n## Agent operating procedure\n\n1. **Check the environment.** Confirm GPU memory, model checkpoint and licence, framework versions and input formats.\n2. **Pin down the inputs.** Confirm formats, identifiers and parameters from the data or the user. Ask rather than guess any value that changes the result.\n3. **Run a small version first.** Run inference on a single sample at low resolution or short length first.\n4. **Execute the full task** using the instructions and references above.\n5. **Validate the result.** Inspect outputs qualitatively and with task metrics; check licence restrictions for generated content.\n6. **Report.** State what was run (versions, commands, parameters), what was checked, and what is still uncertain.\n\n| If this happens | Do this |\n|---|---|\n| Out-of-memory on large inputs | Reduce resolution or sequence length, use half precision, or tile the input. |\n| A function, flag or endpoint in these instructions is missing in the installed version | Check the installed version's own documentation (`help()`, `--help`, official docs), adapt, and tell the user. Never invent an API. |\n| A required input, identifier or parameter is ambiguous | Ask the user, or state the assumption explicitly before running. |\n\n**Integrity rules**\n\n- Never fabricate results, parameters, identifiers, citations or statistics. If something cannot be run or verified, say so plainly.\n- Check model and dataset licences before commercial or published use.\n- Treat version-specific details here as possibly outdated: confirm them against the official documentation for the installed version.\n- Ask before actions that cost money, consume shared GPUs or cloud quota, touch personal or patient data, or cannot be undone.\n\n## Related skills\n\n- `fine-tuning-serving-openpi`: Fine-tune and serve Physical Intelligence OpenPI models (pi0, pi0-fast, pi0.5) using JAX or PyTorch backends for robot policy inference acr…\n- `evaluating-cosmos-policy`: Evaluates NVIDIA Cosmos Policy on LIBERO and RoboCasa simulation environments.\n- `stable-diffusion-image-generation`: Generates images with Stable Diffusion models (SD 1.5, SDXL, SD 3.0, Flux) through the HuggingFace Diffusers library, covering text-to-imag…\n","# OpenVLA-OFT\n\nFine-tuning and evaluation workflows for OpenVLA-OFT and OpenVLA-OFT+ from the official `openvla-oft` codebase. Covers blank-machine setup plus LoRA-based adaptation of OpenVLA for robot action generation with continuous action prediction heads.\n\n## Quick start\n\nClone the public repo, follow the official setup, then evaluate a pretrained LIBERO checkpoint:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft.git\ncd openvla-oft\npython experiments\u002Frobot\u002Flibero\u002Frun_libero_eval.py \\\n  --pretrained_checkpoint moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial \\\n  --task_suite_name libero_spatial \\\n  --center_crop True \\\n  --num_trials_per_task 50 \\\n  --seed 7\n```\n\n## Core concepts\n\n**What OpenVLA-OFT changes**: Standard OpenVLA tokenizes continuous actions into discrete bins, losing precision. OFT replaces this with dedicated continuous action heads (L1 regression or diffusion) while keeping the VLA backbone frozen and adapting via LoRA.\n\n**OFT vs OFT+ variants**:\n\n| Variant | FiLM | Images | Typical use |\n|---------|------|--------|-------------|\n| OFT | Off | 2 (front + wrist) | LIBERO simulation |\n| OFT+ | On | 3 (high + left + right wrist) | ALOHA real-world |\n\n**Key architecture choices**:\n- **LoRA adaptation**: Rank-32 LoRA on VLA backbone (no full fine-tuning needed)\n- **Continuous actions**: L1 regression head (default) or diffusion head\n- **FiLM conditioning**: Feature-wise Linear Modulation for stronger language grounding in OFT+\n- **Multi-image input**: Configurable 2 or 3 camera streams via `num_images_in_input`\n\n## Compute requirements\n\n| Task | GPU | VRAM | Notes |\n|------|-----|------|-------|\n| LIBERO evaluation | 1x A100\u002FA40 | ~16 GB | Single GPU |\n| ALOHA evaluation | 1x A100\u002FA40 | ~18 GB | Single GPU |\n| LIBERO fine-tuning | 8x A100 | ~27 GB\u002FGPU | Paper default |\n| ALOHA fine-tuning (OFT+) | 8x A100 | ~35 GB\u002FGPU | FiLM + 3 images |\n| LoRA merge | 1x any GPU | ~16 GB | One-time step |\n\n## Expected performance benchmarks\n\nOfficial results (paper setup, seed=7, 50 trials per task):\n\n| Task Suite | Task-Specific | Combined Policy | Notes |\n|-----------|--------------|-----------------|-------|\n| LIBERO-Spatial | 97.2% | 96.8% | Easiest suite |\n| LIBERO-Object | 97.4% | 97.0% | Object manipulation |\n| LIBERO-Goal | 95.8% | 95.4% | May peak at 50k-100k steps |\n| LIBERO-10 | 98.0% | 98.0% | Long-horizon tasks |\n| **Average** | **97.1%** | **96.8%** | Near-equivalent |\n\nReproduction notes: results are tied to Python 3.10.14, PyTorch 2.2.0, NVIDIA A100, and custom Transformers fork.\n\n## When to use vs alternatives\n\n**Use OpenVLA-OFT when:**\n- The target task is robot action generation with visual and language conditioning\n- LoRA-based adaptation of `openvla\u002Fopenvla-7b` is preferred\n- You need official LIBERO or ALOHA workflows from the OpenVLA-OFT paper\n- You want continuous action heads (L1 regression or diffusion) instead of tokenized actions\n\n**Use alternatives when:**\n- You need a different VLA architecture (use `fine-tuning-serving-openpi` for pi0\u002Fpi0.5 models)\n- You need the NVIDIA Cosmos Policy stack (use `evaluating-cosmos-policy`)\n- You need general LLM fine-tuning without robot action heads\n\n---\n\n## Workflow 1: Set up environment\n\nCopy this checklist and track progress:\n\n```text\nSetup Progress:\n- [ ] Step 1: Create conda env and install PyTorch\n- [ ] Step 2: Install openvla-oft package in editable mode\n- [ ] Step 3: Install FlashAttention2\n- [ ] Step 4: Verify critical versions\n```\n\n**Step 1: Create conda env and clone repo**\n\n```bash\nconda create -n openvla-oft python=3.10 -y\nconda activate openvla-oft\ngit clone https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft.git\ncd openvla-oft\npip3 install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0\npip3 install robosuite==1.4.0\n```\n\n**Step 2: Install package**\n\n```bash\npip install -e .\n```\n\n**Step 3: Install FlashAttention2**\n\n```bash\npip install packaging ninja\npip install \"flash-attn==2.5.5\" --no-build-isolation\n```\n\n**Step 4: Verify versions**\n\n```python\nimport torch, transformers, peft\nprint(f\"PyTorch: {torch.__version__}\")         # Expected: 2.2.0\nprint(f\"Transformers: {transformers.__version__}\")\nprint(f\"PEFT: {peft.__version__}\")             # Expected: 0.11.1\n```\n\n---\n\n## Workflow 2: Evaluate pretrained checkpoints on LIBERO\n\n```text\nLIBERO Eval Progress:\n- [ ] Step 1: Install LIBERO dependencies\n- [ ] Step 2: Choose checkpoint and task suite\n- [ ] Step 3: Run evaluation\n- [ ] Step 4: Parse and validate results\n```\n\n**Step 1: Install LIBERO**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FLifelong-Robot-Learning\u002FLIBERO.git\npip install -e LIBERO\npip install -r experiments\u002Frobot\u002Flibero\u002Flibero_requirements.txt\n```\n\n**Step 2: Choose checkpoint**\n\n| Checkpoint | Task suite |\n|-----------|------------|\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial` | `libero_spatial` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-object` | `libero_object` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-goal` | `libero_goal` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-10` | `libero_10` |\n| `moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial-object-goal-10` | Combined |\n\n**Step 3: Run evaluation**\n\n```bash\npython experiments\u002Frobot\u002Flibero\u002Frun_libero_eval.py \\\n  --pretrained_checkpoint moojink\u002Fopenvla-7b-oft-finetuned-libero-spatial \\\n  --task_suite_name libero_spatial \\\n  --center_crop True \\\n  --num_trials_per_task 50 \\\n  --seed 7\n```\n\n**Step 4: Parse results**\n\n```python\nimport re\n\ndef parse_libero_log(log_path):\n    \"\"\"Extract per-task success rates from LIBERO eval log.\"\"\"\n    with open(log_path) as f:\n        content = f.read()\n    matches = re.findall(r\"Task (.+?): (\\d+)\u002F(\\d+) successes\", content)\n    for task, successes, trials in matches:\n        rate = int(successes) \u002F int(trials)\n        print(f\"  {task}: {rate:.0%} ({successes}\u002F{trials})\")\n\nparse_libero_log(\"experiments\u002Flogs\u002Flatest.log\")\n```\n\n---\n\n## Workflow 3: Fine-tune on LIBERO\n\n> **Detailed reference**: See [references\u002Flibero-workflow.md](references\u002Flibero-workflow.md) for the full LIBERO setup, checkpoint selection strategy, and LoRA merge instructions.\n\n```text\nLIBERO Fine-Tune Progress:\n- [ ] Step 1: Prepare RLDS dataset\n- [ ] Step 2: Launch torchrun with OFT defaults\n- [ ] Step 3: Evaluate intermediate and final checkpoints\n- [ ] Step 4: Merge LoRA for deployment if needed\n```\n\n**Step 1: Dataset**\n\nUse RLDS datasets: `libero_spatial_no_noops`, `libero_object_no_noops`, `libero_goal_no_noops`, `libero_10_no_noops`.\n\n**Step 2: Launch training**\n\n```bash\ntorchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts\u002Ffinetune.py \\\n  --vla_path openvla\u002Fopenvla-7b \\\n  --data_root_dir \u002FPATH\u002FTO\u002FRLDS\u002FDATASETS\u002F \\\n  --dataset_name libero_spatial_no_noops \\\n  --run_root_dir \u002FYOUR\u002FCHECKPOINTS\u002F \\\n  --use_l1_regression True \\\n  --use_diffusion False \\\n  --use_film False \\\n  --num_images_in_input 2 \\\n  --use_proprio True \\\n  --batch_size 8 \\\n  --learning_rate 5e-4 \\\n  --num_steps_before_decay 100000 \\\n  --max_steps 150005 \\\n  --save_freq 10000 \\\n  --save_latest_checkpoint_only False \\\n  --image_aug True \\\n  --lora_rank 32 \\\n  --wandb_entity YOUR_WANDB_ENTITY \\\n  --wandb_project YOUR_WANDB_PROJECT\n```\n\n**Step 3: Evaluate checkpoints**\n\nEvaluate 50k, 100k, and 150k checkpoints — LIBERO-Goal may peak earlier than other suites. Keep best checkpoint per suite by actual task success, not only training loss.\n\n**Step 4: Merge LoRA**\n\n```bash\npython vla-scripts\u002Fmerge_lora_weights_and_save.py \\\n  --base_checkpoint openvla\u002Fopenvla-7b \\\n  --lora_finetuned_checkpoint_dir \u002FPATH\u002FTO\u002FCHECKPOINT_DIR\n```\n\n---\n\n## Workflow 4: Train and evaluate OpenVLA-OFT+ on ALOHA\n\n> **Detailed reference**: See [references\u002Faloha-workflow.md](references\u002Faloha-workflow.md) for the full ALOHA server-client setup, data preprocessing, dataset registration, and troubleshooting.\n\n```text\nALOHA Progress:\n- [ ] Step 1: Preprocess raw ALOHA demonstrations\n- [ ] Step 2: Convert to RLDS and register dataset configs\n- [ ] Step 3: Fine-tune OFT+ with FiLM and 3 images\n- [ ] Step 4: Start VLA server on GPU machine\n- [ ] Step 5: Run client-side robot evaluation\n```\n\n**Step 1: Preprocess raw data**\n\n```bash\npython experiments\u002Frobot\u002Faloha\u002Fpreprocess_split_aloha_data.py \\\n  --dataset_path \u002Fpath\u002Fto\u002Faloha_raw\u002Ftask_name\u002F \\\n  --out_base_dir \u002Fpath\u002Fto\u002Faloha_preprocessed\u002F \\\n  --percent_val 0.05\n```\n\n**Step 2: Register RLDS dataset**\n\nAdd entries in:\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Fconfigs.py`\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Ftransforms.py`\n- `prismatic\u002Fvla\u002Fdatasets\u002Frlds\u002Foxe\u002Fmixtures.py`\n\nSet ALOHA constants in `prismatic\u002Fvla\u002Fconstants.py`:\n\n```python\n# Expected defaults for ALOHA\nNUM_ACTIONS_CHUNK = 25        # Match control frequency (25 Hz)\nACTION_DIM = 14               # 7 joints x 2 arms\nPROPRIO_DIM = 14\nACTION_PROPRIO_NORMALIZATION_TYPE = \"BOUNDS\"  # Absolute joint angles\n```\n\n**Step 3: Fine-tune OFT+**\n\n```bash\ntorchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts\u002Ffinetune.py \\\n  --vla_path openvla\u002Fopenvla-7b \\\n  --data_root_dir \u002FPATH\u002FTO\u002FRLDS\u002FDATASETS\u002F \\\n  --dataset_name aloha_task_name \\\n  --run_root_dir \u002FYOUR\u002FCHECKPOINTS\u002F \\\n  --use_l1_regression True \\\n  --use_diffusion False \\\n  --use_film True \\\n  --num_images_in_input 3 \\\n  --use_proprio True \\\n  --batch_size 4 \\\n  --learning_rate 5e-4 \\\n  --num_steps_before_decay 50000 \\\n  --max_steps 100005 \\\n  --use_val_set True \\\n  --val_freq 10000 \\\n  --save_freq 10000 \\\n  --lora_rank 32\n```\n\n**Step 4: Start VLA server (GPU machine)**\n\n```bash\npython vla-scripts\u002Fdeploy.py \\\n  --pretrained_checkpoint \u002FPATH\u002FTO\u002FFINETUNED\u002FCHECKPOINT\u002F \\\n  --use_l1_regression True \\\n  --use_film True \\\n  --num_images_in_input 3 \\\n  --use_proprio True \\\n  --center_crop True \\\n  --unnorm_key aloha_task_name\n```\n\nServer listens on `http:\u002F\u002F\u003Cserver-ip>:8777\u002Fact`.\n\n**Step 5: Run client evaluation**\n\n```bash\npython experiments\u002Frobot\u002Faloha\u002Frun_aloha_eval.py \\\n  --center_crop True \\\n  --num_open_loop_steps 25 \\\n  --use_vla_server True \\\n  --vla_server_url http:\u002F\u002F\u003CSERVER_IP>:8777 \\\n  --num_rollouts_planned 50 \\\n  --max_steps 1500\n```\n\n---\n\n## Critical invariants\n\nThese flags **must** be consistent between training and inference. Mismatches cause silent failures:\n\n| Area | Required consistency | Failure if mismatched |\n|------|---------------------|----------------------|\n| Action head | `use_l1_regression` vs `use_diffusion` | Wrong head loading, invalid actions |\n| FiLM | `use_film` across train\u002Feval\u002Fdeploy | Reduced language grounding |\n| Image streams | `num_images_in_input` parity | Shape mismatch or performance drop |\n| Proprio | `use_proprio` parity | State conditioning mismatch |\n| LoRA rank | `lora_rank` parity | Adapter loading errors |\n| Crop | `image_aug=True` in train → `center_crop=True` in eval | Significant success-rate drop |\n| Action chunk | `num_open_loop_steps` ≈ `NUM_ACTIONS_CHUNK` | Latency\u002Fsuccess tradeoff shifts |\n| Unnorm key | `unnorm_key` present in checkpoint stats | Bad action scale |\n\nQuick validation:\n\n```python\n# Verify config parity before long eval runs\ntrain_flags = {\"use_film\": False, \"num_images\": 2, \"use_proprio\": True, \"lora_rank\": 32}\neval_flags  = {\"use_film\": False, \"num_images\": 2, \"use_proprio\": True, \"lora_rank\": 32}\nfor k in train_flags:\n    assert train_flags[k] == eval_flags[k], f\"Mismatch: {k}: {train_flags[k]} vs {eval_flags[k]}\"\nprint(\"All flags consistent\")\n```\n\n---\n\n## Common issues\n\n**Issue: Action quality drops after moving checkpoints across GPU types**\n\nFix: re-merge LoRA adapter on the downstream device:\n\n```bash\npython vla-scripts\u002Fmerge_lora_weights_and_save.py \\\n  --base_checkpoint openvla\u002Fopenvla-7b \\\n  --lora_finetuned_checkpoint_dir \u002FPATH\u002FTO\u002FCHECKPOINT_DIR\n```\n\n**Issue: Wrong action scale or failed un-normalization**\n\nFix: check `--unnorm_key` matches dataset statistics in checkpoint:\n\n```python\nimport torch\nckpt = torch.load(\"checkpoint\u002Fmodel.pt\", map_location=\"cpu\")\nprint(\"Available norm keys:\", list(ckpt.get(\"norm_stats\", {}).keys()))\n```\n\n**Issue: Eval success unexpectedly low**\n\nFix: verify all invariants in the table above. Most common culprit: missing `center_crop=True` when trained with `image_aug=True`.\n\n**Issue: LIBERO eval crashes with `EOFError` asking for dataset path**\n\nFix: set `LIBERO_CONFIG_PATH` and write a non-interactive config before headless eval.\n\n**Issue: ALOHA client ROS import fails with `libffi` symbol errors**\n\nFix: `conda install -c conda-forge libffi`\n\n**Issue: `flash-attn` install fails**\n\nFix: export `TMPDIR` and `PIP_CACHE_DIR` to the same filesystem, retry with `--no-cache-dir`.\n\n**Issue: EGL teardown logs show `EGL_NOT_INITIALIZED`**\n\nFix: treat as teardown noise unless exit code is non-zero. Set EGL env vars:\n\n```bash\nexport MUJOCO_GL=egl PYOPENGL_PLATFORM=egl\nexport CUDA_VISIBLE_DEVICES=0 MUJOCO_EGL_DEVICE_ID=0\n```\n\n---\n\n## For HPC\u002Fcluster users\n\nOn Slurm clusters, route caches to scratch to avoid filling `\u002Fhome` quota:\n\n```bash\nexport HF_HOME=\u002Fscratch\u002F$USER\u002F.cache\u002Fhuggingface\nexport XDG_CACHE_HOME=\u002Fscratch\u002F$USER\u002F.cache\nexport PIP_CACHE_DIR=\u002Fscratch\u002F$USER\u002F.cache\u002Fpip\nexport TMPDIR=\u002Fscratch\u002F$USER\u002Ftmp\n```\n\nAvoid stacking cluster Python modules when using conda. Typically `module load cuda` is sufficient.\n\n---\n\n## Advanced topics\n\n**Paper summary and checkpoints**: See [references\u002Fpaper-and-checkpoints.md](references\u002Fpaper-and-checkpoints.md)\n**Detailed LIBERO workflow**: See [references\u002Flibero-workflow.md](references\u002Flibero-workflow.md)\n**Detailed ALOHA workflow**: See [references\u002Faloha-workflow.md](references\u002Faloha-workflow.md)\n**Config map and troubleshooting matrix**: See [references\u002Fconfig-troubleshooting.md](references\u002Fconfig-troubleshooting.md)\n\n## Resources\n\n- Project website: https:\u002F\u002Fopenvla-oft.github.io\u002F\n- Paper: https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.19645\n- Repository: https:\u002F\u002Fgithub.com\u002Fmoojink\u002Fopenvla-oft\n- RLDS builder: https:\u002F\u002Fgithub.com\u002Fmoojink\u002Frlds_dataset_builder\n\n## Agent operating procedure\n\n1. **Check the environment.** Confirm GPU memory, model checkpoint and licence, framework versions and input formats.\n2. **Pin down the inputs.** Confirm formats, identifiers and parameters from the data or the user. Ask rather than guess any value that changes the result.\n3. **Run a small version first.** Run inference on a single sample at low resolution or short length first.\n4. **Execute the full task** using the instructions and references above.\n5. **Validate the result.** Inspect outputs qualitatively and with task metrics; check licence restrictions for generated content.\n6. **Report.** State what was run (versions, commands, parameters), what was checked, and what is still uncertain.\n\n| If this happens | Do this |\n|---|---|\n| Out-of-memory on large inputs | Reduce resolution or sequence length, use half precision, or tile the input. |\n| A function, flag or endpoint in these instructions is missing in the installed version | Check the installed version's own documentation (`help()`, `--help`, official docs), adapt, and tell the user. Never invent an API. |\n| A required input, identifier or parameter is ambiguous | Ask the user, or state the assumption explicitly before running. |\n\n**Integrity rules**\n\n- Never fabricate results, parameters, identifiers, citations or statistics. If something cannot be run or verified, say so plainly.\n- Check model and dataset licences before commercial or published use.\n- Treat version-specific details here as possibly outdated: confirm them against the official documentation for the installed version.\n- Ask before actions that cost money, consume shared GPUs or cloud quota, touch personal or patient data, or cannot be undone.\n\n## Related skills\n\n- `fine-tuning-serving-openpi`: Fine-tune and serve Physical Intelligence OpenPI models (pi0, pi0-fast, pi0.5) using JAX or PyTorch backends for robot policy inference acr…\n- `evaluating-cosmos-policy`: Evaluates NVIDIA Cosmos Policy on LIBERO and RoboCasa simulation environments.\n- `stable-diffusion-image-generation`: Generates images with Stable Diffusion models (SD 1.5, SDXL, SD 3.0, Flux) through the HuggingFace Diffusers library, covering text-to-imag…\n",{"name":5,"license":15,"metadata":58,"description":7},{"tags":59,"version":60,"category":61,"maintainer":62,"dependencies":63},"OpenVLA, OpenVLA-OFT, VLA, Robotics, Fine-Tuning, LIBERO, ALOHA, LoRA, FiLM, Action Chunking, Deployment, Continuous Actions","1.0.0","multimodal-and-emerging","Kalaris Labs","torch==2.2.0, transformers>=4.40.0, peft==0.11.1, draccus==0.8.0, accelerate>=0.25.0, wandb>=0.16.0, fastapi>=0.100.0, uvicorn>=0.24.0, tensorflow==2.15.0, robosuite==1.4.0","main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft",483,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-13 02:16:32",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill fine-tuning-openvla-oft",{"tool":80,"command":81},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill fine-tuning-openvla-oft",{"tool":83,"command":84},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill fine-tuning-openvla-oft","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002FSKILL.md",true,[88,94,98,102],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Faloha-workflow.md","REFERENCE","参考文档",3846,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002Freferences\u002Faloha-workflow.md",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fconfig-troubleshooting.md",4010,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002Freferences\u002Fconfig-troubleshooting.md",{"path":99,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Flibero-workflow.md",3070,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002Freferences\u002Flibero-workflow.md",{"path":103,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fpaper-and-checkpoints.md",2600,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Ffine-tuning-openvla-oft\u002Freferences\u002Fpaper-and-checkpoints.md",[107,116,123,130,155,180],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":115},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":115},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":115},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":53},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[137,138,139,140,141,142,143,144,145,146,50,147,148,149,150,151,152,153,41,154],"search","deja search","never","error","ready","memory","re","decide","fix","design","when","you","done","reviewer","io","change","cli","past",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":53},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[162,163,164,151,165,166,167,168,169,170,171,172,173,174,142,175,176,177,178,179],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","end","reflection",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":111,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":193,"publishedAt":53},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[186,189,190],{"categoryNo":187,"categoryName":188,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":191,"categoryName":192,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[182,194,195,196,197,198,199,176,200,143,201,202,203,204,147,205,206,207,208,209],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]