Install or update an Agent Skills bundle into a repository SSOT (.ai/skills/).
Standardize the "landing" process for Agent Skills so a skills bundle can be applied to any repository and consumed by any LLM/agent runtime that implements the folder-based SKILL.md convention.
The land-skills-into-repo skill provides:
./scripts/land_skills.py) that performs a safe, auditable install/update with dry-run by default.Note: Provider stubs (for .codex/skills/, .claude/skills/, etc.) should be generated using node .ai/scripts/sync-skills.cjs, not the land_skills.py script.
Use the land-skills-into-repo skill when:
.zip) and need to install it into a target repo's SSOT.Do not use the skill when:
--plan mode only).node .ai/scripts/sync-skills.cjs instead).You MUST obtain:
repo_root: Path to the target repository root (default: current working directory).source: Path to a skills bundle:
.ai/skills/), or.zip file containing either of the above.You MAY additionally provide:
ssot_dir: Destination SSOT directory inside the repo (default: .ai/skills).config: A JSON config file (see ./templates/landing-config.*).The skill writes:
repo_root/.ai/skills/** (default) or your chosen ssot_dir.repo_root/.ai/.backups/skills-landing/<timestamp>/... (default).The script always produces a plan/report to stdout; it can also emit JSON via --json-report.
From the directory that contains the SKILL.md (the "skill root"), run:
python3 ./scripts/land_skills.py \
--repo-root /path/to/repo \
--source /path/to/skills-bundle.zip \
--plan
Rules:
--plan for a new repo or unknown state.After reviewing the plan output, apply changes:
python3 ./scripts/land_skills.py \
--repo-root /path/to/repo \
--source /path/to/skills-bundle.zip \
--apply \
--overwrite=changed \
--backup
Recommended defaults:
--overwrite=changed (overwrite only if content differs)--backup (capture overwritten files)Run verification after applying:
python3 ./scripts/land_skills.py \
--repo-root /path/to/repo \
--verify
The verifier checks:
SKILL.md with YAML frontmatter.name is present and unique.After landing skills into the SSOT, generate provider stubs:
# Run from repo root.
node .ai/scripts/sync-skills.cjs --scope current --providers both --mode reset --yes
This generates lightweight wrapper stubs in .codex/skills/ and .claude/skills/ that point to the SSOT.
--plan) completed before apply--verify) passed--prune is explicitly set--backup)--plan) when --apply is not provided./scripts/land_skills.py: installer/verifier (stdlib-only Python)../templates/landing-config.schema.json: optional config schema../templates/landing-config.example.json: optional config example../examples/: minimal runnable scenarios.