MOOS-IvP Installer
Overview
Use this skill to get a working local checkout of upstream MOOS-IvP. Keep the
install simple: clone or locate the checkout, follow the upstream setup README,
then add the small environment setup the other MOOS-IvP skills expect.
After this skill succeeds, the machine should be ready for MOOS-IvP extension
repo, app, behavior, or mission work.
Defaults
- Source repo:
https://github.com/moos-ivp/moos-ivp.git
- SSH form when requested:
git@github.com:moos-ivp/moos-ivp.git
- Default install path:
~/moos-ivp
- Environment file:
<moos-ivp-root>/env.sh
- Dependencies and build commands: follow the relevant upstream setup README
- Persistent shell profile edits: ask first
Confirm Before Changes
Before cloning, installing packages, building, creating env.sh, or editing a
shell profile:
- Do non-destructive discovery first: look for an existing checkout, resolve
the likely install path, and choose the platform setup README.
- Ask for any missing user choices: install location and whether to add
persistent shell integration.
- Summarize the resolved path, clone URL if cloning, branch or tag if
requested, selected README, and shell-profile choice in one concise
sentence.
- Proceed when the user has already given explicit approval, or after they
confirm the summary. Still ask before package-manager,
sudo, or shell
profile edits unless that specific approval was already given.
Workflow
Check whether the user already has a valid checkout.
- Try an explicit user path first.
- Then try
MOOS_IVP_ROOT.
- Then try common paths such as
~/moos-ivp, ~/src/moos-ivp,
~/repos/moos-ivp, and ~/projects/moos-ivp.
- Treat a checkout as valid when it has
ivp/src, build-moos.sh,
build-ivp.sh, scripts/GenMOOSApp_AppCasting, and
scripts/GenBehavior.
If no checkout exists, confirm the target path before cloning.
Clone with the confirmed source URL:
git clone https://github.com/moos-ivp/moos-ivp.git <target-root>
If the user requests a branch or tag, include it in the clone or checkout
plan before building.
Choose the relevant setup README from the checkout:
- macOS:
README-OS-X.txt
- GNU/Linux:
README-GNULINUX.txt
- Windows:
README-WINDOWS.txt
Read the selected README and follow its dependency and build instructions.
Ask before running package-manager or sudo commands.
Create the checkout-local shell environment file.
- Write
<moos-ivp-root>/env.sh.
- Resolve the absolute checkout path before writing the file.
- Write expanded absolute paths inside
env.sh, not ~ or $HOME.
- Make repeated sourcing idempotent so
PATH does not accumulate duplicate
entries.
- Keep the file source-compatible with common Bash and zsh startup files.
- Only set
MOOS_IVP_ROOT and PATH for the core checkout. Do not set
IVP_BEHAVIOR_DIRS here; extension repos own their behavior library
paths.
- Use this shape:
#!/usr/bin/env bash
# Source this file to use this MOOS-IvP checkout.
export MOOS_IVP_ROOT="<absolute-moos-ivp-root>"
case ":$PATH:" in *":<absolute-moos-ivp-root>/bin:"*) ;; *) PATH="$PATH:<absolute-moos-ivp-root>/bin" ;; esac
case ":$PATH:" in *":<absolute-moos-ivp-root>/scripts:"*) ;; *) PATH="$PATH:<absolute-moos-ivp-root>/scripts" ;; esac
export PATH
If the user opted into persistent shell integration, update the selected
shell profile.
- Do not require the user to already know shell profile details. If the user
named a shell, suggest its usual profile, such as
~/.zshrc for zsh or
~/.bashrc for Bash, and ask for confirmation. If the user did not name a
shell, ask which profile to update and offer common choices: ~/.zshrc,
~/.bashrc, or no profile edit.
- Create the profile file if it does not exist.
- Preserve user content.
- Append the managed source block near the end of the profile so it runs
after earlier
PATH setup. Do not insert it before later lines that reset
or export PATH.
- Use a clearly marked block:
# >>> moos-ivp core >>>
[ -f "<absolute-moos-ivp-root>/env.sh" ] && . "<absolute-moos-ivp-root>/env.sh"
# <<< moos-ivp core <<<
- If the user opted out, leave the profile unchanged and tell them they can
run
. <moos-ivp-root>/env.sh in a shell session.
Creating env.sh is the normal local shell setup for this skill. Adding the
profile source block is the separate persistent terminal setup that requires
explicit user approval.
Validate:
<skill-dir>/scripts/validate_moos_ivp_install.sh <moos-ivp-root>
Run this after the README build steps and env.sh creation. For earlier
discovery, use the structural checkout checks in step 1. Treat any
fail - ... line as the concise reason to report or fix.
Failure Handling
- If dependencies are missing, report the README consulted and the missing
package or tool.
- If build fails, report the first actionable compiler, linker, CMake, or
missing-library error.
- If profile editing fails, leave the checkout intact and tell the user to
source
env.sh manually.
1---2name: moos-ivp-installer3description: Install or validate upstream MOOS-IvP: locate or clone moos-ivp/moos-ivp, follow the platform setup README, create env.sh, and verify the checkout for MOOS-IvP development.4---56# MOOS-IvP Installer78## Overview910Use this skill to get a working local checkout of upstream MOOS-IvP. Keep the11install simple: clone or locate the checkout, follow the upstream setup README,12then add the small environment setup the other MOOS-IvP skills expect.1314After this skill succeeds, the machine should be ready for MOOS-IvP extension15repo, app, behavior, or mission work.1617## Defaults1819- Source repo: `https://github.com/moos-ivp/moos-ivp.git`20- SSH form when requested: `git@github.com:moos-ivp/moos-ivp.git`21- Default install path: `~/moos-ivp`22- Environment file: `<moos-ivp-root>/env.sh`23- Dependencies and build commands: follow the relevant upstream setup README24- Persistent shell profile edits: ask first2526## Confirm Before Changes2728Before cloning, installing packages, building, creating `env.sh`, or editing a29shell profile:30311. Do non-destructive discovery first: look for an existing checkout, resolve32 the likely install path, and choose the platform setup README.332. Ask for any missing user choices: install location and whether to add34 persistent shell integration.353. Summarize the resolved path, clone URL if cloning, branch or tag if36 requested, selected README, and shell-profile choice in one concise37 sentence.384. Proceed when the user has already given explicit approval, or after they39 confirm the summary. Still ask before package-manager, `sudo`, or shell40 profile edits unless that specific approval was already given.4142## Workflow43441. Check whether the user already has a valid checkout.45 - Try an explicit user path first.46 - Then try `MOOS_IVP_ROOT`.47 - Then try common paths such as `~/moos-ivp`, `~/src/moos-ivp`,48 `~/repos/moos-ivp`, and `~/projects/moos-ivp`.49 - Treat a checkout as valid when it has `ivp/src`, `build-moos.sh`,50 `build-ivp.sh`, `scripts/GenMOOSApp_AppCasting`, and51 `scripts/GenBehavior`.522. If no checkout exists, confirm the target path before cloning.533. Clone with the confirmed source URL:5455 ```bash56 git clone https://github.com/moos-ivp/moos-ivp.git <target-root>57 ```5859 If the user requests a branch or tag, include it in the clone or checkout60 plan before building.61624. Choose the relevant setup README from the checkout:63 - macOS: `README-OS-X.txt`64 - GNU/Linux: `README-GNULINUX.txt`65 - Windows: `README-WINDOWS.txt`665. Read the selected README and follow its dependency and build instructions.67 Ask before running package-manager or sudo commands.686. Create the checkout-local shell environment file.69 - Write `<moos-ivp-root>/env.sh`.70 - Resolve the absolute checkout path before writing the file.71 - Write expanded absolute paths inside `env.sh`, not `~` or `$HOME`.72 - Make repeated sourcing idempotent so `PATH` does not accumulate duplicate73 entries.74 - Keep the file source-compatible with common Bash and zsh startup files.75 - Only set `MOOS_IVP_ROOT` and `PATH` for the core checkout. Do not set76 `IVP_BEHAVIOR_DIRS` here; extension repos own their behavior library77 paths.78 - Use this shape:7980 ```bash81 #!/usr/bin/env bash82 # Source this file to use this MOOS-IvP checkout.83 export MOOS_IVP_ROOT="<absolute-moos-ivp-root>"84 case ":$PATH:" in *":<absolute-moos-ivp-root>/bin:"*) ;; *) PATH="$PATH:<absolute-moos-ivp-root>/bin" ;; esac85 case ":$PATH:" in *":<absolute-moos-ivp-root>/scripts:"*) ;; *) PATH="$PATH:<absolute-moos-ivp-root>/scripts" ;; esac86 export PATH87 ```88897. If the user opted into persistent shell integration, update the selected90 shell profile.91 - Do not require the user to already know shell profile details. If the user92 named a shell, suggest its usual profile, such as `~/.zshrc` for zsh or93 `~/.bashrc` for Bash, and ask for confirmation. If the user did not name a94 shell, ask which profile to update and offer common choices: `~/.zshrc`,95 `~/.bashrc`, or no profile edit.96 - Create the profile file if it does not exist.97 - Preserve user content.98 - Append the managed source block near the end of the profile so it runs99 after earlier `PATH` setup. Do not insert it before later lines that reset100 or export `PATH`.101 - Use a clearly marked block:102103 ```bash104 # >>> moos-ivp core >>>105 [ -f "<absolute-moos-ivp-root>/env.sh" ] && . "<absolute-moos-ivp-root>/env.sh"106 # <<< moos-ivp core <<<107 ```108109 - If the user opted out, leave the profile unchanged and tell them they can110 run `. <moos-ivp-root>/env.sh` in a shell session.111112 Creating `env.sh` is the normal local shell setup for this skill. Adding the113 profile source block is the separate persistent terminal setup that requires114 explicit user approval.1151168. Validate:117118 ```bash119 <skill-dir>/scripts/validate_moos_ivp_install.sh <moos-ivp-root>120 ```121122 Run this after the README build steps and `env.sh` creation. For earlier123 discovery, use the structural checkout checks in step 1. Treat any124 `fail - ...` line as the concise reason to report or fix.125126## Failure Handling127128- If dependencies are missing, report the README consulted and the missing129 package or tool.130- If build fails, report the first actionable compiler, linker, CMake, or131 missing-library error.132- If profile editing fails, leave the checkout intact and tell the user to133 source `env.sh` manually.