Legacy Migration Planner
tech-leads-club/agent-skills
Produces evidence-based migration plans using the Strangler Fig pattern for monolith splits, rewrites and framework upgrades, without implementing them.
Migrate an Elastic integration package from a legacy inline agent template to integrations with required input dependencies (requires.input, streams[].package).
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install elastic/integrations migrate-required-input-dependency --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .claude/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .claude/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependencyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install elastic/integrations migrate-required-input-dependency --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .agents/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .agents/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install elastic/integrations migrate-required-input-dependency --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .cursor/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .cursor/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/elastic/integrations.git --path .agents/skills/migrate-required-input-dependency--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install elastic/integrations migrate-required-input-dependency --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .gemini/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .gemini/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install elastic/integrations migrate-required-input-dependencyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .github/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .github/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add elastic/integrations --skill migrate-required-input-dependency -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install elastic/integrations migrate-required-input-dependency --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/integrations.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/migrate-required-input-dependency .opencode/skills/migrate-required-input-dependency && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "migrate-required-input-dependency" agent skill from https://github.com/elastic/integrations/tree/main/.agents/skills/migrate-required-input-dependency into .opencode/skills/migrate-required-input-dependency/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-required-input-dependency", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
migrate-required-input-dependencyMigrate an Elastic integration package from a legacy inline agent template to integrations with required input dependencies (requires.input, streams[].package).
Migrate Required Input Dependency is an agent skill from elastic/integrations, published by the product's own GitHub organization. Migrate an Elastic integration package from a legacy inline agent template to integrations with required input dependencies (requires.input, streams[].package). Gathers developer decisions on dataset naming, variable overrides, stack constraints, and tests before applying changes. Use when the user asks to migrate an integration to an input package, adopt requires.input, switch to streams[].package, or mentions required input dependencies. Requires elastic-package CLI.
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires elastic-package CLI. Designed for packages in elastic/integrations.
The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a0dffc9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires `elastic-package` CLI. Designed for packages in elastic/integrations.
From compatibility in the SKILL.md frontmatter.
Migrate Required Input Dependency loads about 4.9k tokens when it runs. Until then it costs about 129 tokens; SKILL.md has 2,038 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from elastic/integrations at commit a0dffc9, republished under its Apache-2.0 licence (© elastic). 2,038 words, ~4,897 tokens.
.claude/skills/migrate-required-input-dependency/SKILL.md (or your agent's skills folder).Migrate an integration package to integrations with required input dependencies.
Authoritative guide: HOWTO: Migrate an integration package to use required input dependencies (docs/howto/migrate_integration_required_input_dependency.md in elastic-package on main)
At the start of Phase 1, read that guide from a local elastic-package checkout or from the URL above.
Reference implementation: elastic/integrations#19719 (packages/elastic_package_registry). If main still shows legacy input: / inline collector templates, diff against the PR branch — do not copy pre-migration patterns from main.
stream.yml.hbs (hardcoding causes Fleet UI values that have no effect). For each variable, be explicit about intent per the how-to guide Variable overrides section: who sets it (integration author vs end user), whether it appears in Fleet, and whether the rendered agent template references it via {{variable}} rather than a hardcoded literal.dataset: on the data stream manifest when the integration dataset must differ from the input package default — do not expose data_stream.dataset as a user variable unless the developer explicitly chooses that approach.stream.yml.hbs limited to integration-owned template fragments only.elastic-package build and elastic-package test after migration; use elastic-package test policy --generate only after the developer reviews generated expectations.main as source of truth — use the guide and PR #19719 when packages/elastic_package_registry is still legacy.Confirm elastic-package version succeeds. If missing, stop and point to the elastic-package install guide. Version should be minimum v0.125.1.
Locate the integration package root (manifest.yml, type: integration).
Read the legacy setup:
manifest.yml — policy_templates, format_version, conditions, existing requiresmanifest.yml and agent/stream/*.hbsfields/, ingest pipelines, dashboards tied to the current dataset/index name_dev/test/config.yml, policy/system/pipeline testsIdentify the target input package — search local packages/ for type: input; if not found, check the package registry or ask the developer.
Diff legacy template vars/defaults against the input package manifest vars/defaults. Flag input-only variables (present on input, absent from legacy template) for Gate D.
Record the integration's historical dataset name(s) from policy tests, dashboards, output_permissions, or data_stream.dataset usage.
Present a short inventory: package name, data streams, legacy input type, proposed input package, variables that differ between legacy and input defaults, input-only variables, and common diffs (for example hosts path format).
Use AskQuestion when available; otherwise ask conversationally. Do not proceed to Phase 3 until every applicable gate below is resolved.
| Decision | Options / prompt |
|---|---|
| Suitable input package exists? | Yes — proceed · No — stop; recommend creating/publishing an input package first |
Stack supports format_version ≥ 3.6? | Yes (stack 9.4+) · No — stop; plan stack upgrade or defer migration |
| Drop-in replacement assumed? | Confirm developer understands dataset, variable precedence, and policy expectations need explicit work |
| Multiple data streams | Same input package for all streams, or per-stream input packages (rare)? |
| Decision | Options / prompt |
|---|---|
| Input package | Which input package? (e.g. prometheus_input) |
| Input version pin | Exact version for requires.input (e.g. "1.0.1") — use elastic-package requires update later to bump pins |
| Input version source | Published registry version · Unpublished — local requires.source for tests (build still fetches from registry unless using a local registry) |
| Data streams in scope | All data streams or a subset? |
| Decision | Options / prompt |
|---|---|
format_version | Default 3.6.5 unless developer specifies otherwise (minimum 3.6 for requires.input) |
conditions.kibana.version | Required minimum for target stack? (guide example: ^9.4.4) |
| Changelog type for stack drop | enhancement (typical) or breaking-change? |
Explain the risk: without an explicit dataset, documents may index under the input package default (e.g. metrics-prometheus-*).
| Decision | Options / prompt |
|---|---|
| Dataset name per data stream | Confirm historical name (e.g. elastic_package_registry.metrics) |
| Dataset strategy | dataset: on data stream manifest (recommended) · data_stream.dataset stream var · Auto-naming package_name.stream_type (only if historically correct) |
Default recommendation when unsure: dataset: on the data stream manifest.
Follow the how-to guide Variable overrides section. The rendered agent policy merges three layers: input package template defaults, integration stream.yml.hbs, and user-selected values. Understanding which layer wins is critical.
Include every variable from the input package manifest, even if absent from the legacy template. For data_stream.dataset on the input package, prefer manifest dataset: (Gate C), not a stream var override.
Variables can be declared at stream level (streams[].vars in the data stream manifest) or input level (policy_templates[].inputs[].vars in the package manifest). Input-level declarations are promoted to input-scoped variables. Use stream-level vars for per-data-stream tuning; use input-level vars when the override applies to every data stream that references the input package in that policy template.
For each variable, ask the developer to classify:
| Category | Meaning | Action |
|---|---|---|
| A — Integration-only | Not in input package (e.g. metrics_path) | Add data stream var + reference in slim stream.yml.hbs via {{variable}} |
| B — Override input default | Input default differs from legacy behaviour (e.g. rate_counters: false) | Redeclare on streams[].vars with integration default |
| C — Inherit | Input default matches legacy (e.g. use_types: true) | Remove from local template and data stream manifest; do not redeclare or hardcode |
For each A and B variable, also confirm variable intent:
show_user: true (user-facing) or false (advanced/hidden)?{{variable}} in stream.yml.hbs or merged from the input template — not a hardcoded literal that bypasses Fleet?Category C variables inherit from the input package during bundling with show_user: false by default (advanced options in Fleet) — no explicit redeclaration needed.
Explicitly ask whether any variable should be hardcoded in stream.yml.hbs. If yes, warn that Fleet may still show the input default in the UI and user edits will not apply. Document the choice in the migration plan.
Present the variable matrix (name → category → intent → default → show_user → template binding) and get confirmation before editing.
| Decision | Options / prompt |
|---|---|
Local input source path | Relative path for _dev/test/config.yml (e.g. ../prometheus_input) if input is unpublished — affects elastic-package test only |
| Policy tests | Confirm default (vars: ~) + overrides test; which vars to exercise in overrides? For multiple data streams sharing the same input type, policy expectations must list sibling streams as enabled: false |
| Policy expectation generation | Generate with --generate after plan approval, or defer until post-edit review? |
| Pipeline regression tests | Any known edge cases (null and missing fields)? |
| System test traffic | Does the service need synthetic traffic for metrics to appear? Which hit assertions need extending? |
| Fleet variable spot-check | Install built package in local stack and create a policy when possible — confirm Fleet-visible variables map to the rendered agent template and user edits take effect |
| Decision | Options / prompt |
|---|---|
| Field mapping fixes | Any long → double or similar type corrections? Compare integration and input package fields/ against collector output. Check for breaking changes if users may already have data indexed under the old type (mapping conflicts, reindex). Changelog: bugfix when the prior type was wrong and never worked; breaking-change when the correction is incompatible with existing indices. |
| Ingest pipeline re-test | Re-test against real collector output after input package switch? |
| Dashboard migration | Re-export for target stack Lens version · Validate only · N/A |
| Documentation | Manually document input dependency if {{ inputDocs }} is empty? |
| Package version bump | Minor bump typical for this migration? |
Summarize the full plan:
requires.input, policy_templates, format_version, version bump)input: key, streams[].package, dataset:, category A/B streams[].vars only, slim template contents with {{variable}} bindingsAsk the developer to confirm the plan before making any edits.
Apply changes in this order (see migrate_integration_required_input_dependency.md):
manifest.yml — format_version, requires.input, policy_templates → package: <input>, bump version per Gate Fdata_stream/<name>/manifest.yml — set dataset:; replace legacy input: with streams[].package; add template_path: stream.yml.hbs; declare streams[].vars for categories A/B only; remove category C vars from local manifestagent/stream/stream.yml.hbs — keep only integration-owned fragments; remove all collector config merged from the input package_dev/test/config.yml — policy/system requires.source if Gate E appliestest-default.yml, test-overrides.yml; generate expectations only after developer approval; confirm every Fleet-visible variable maps to the rendered agent template and user-set values take effect; confirm every Fleet-visible variable maps to the rendered agent template and user-set values take effectchangelog.yml — migration (enhancement), stack constraint, field fixes (bugfix) per Gate B/Felastic-package build to regenerate docs; then manual input section in _dev/build/docs/ if Gate F requires itDo not bump unrelated packages or refactor outside migration scope.
From the package directory:
elastic-package build
elastic-package check
elastic-package test -vIf system tests need variants or traffic, run what the developer confirmed in Gate E.
Per the how-to guide end-to-end verification step, install the built package in a local stack and create an agent policy when possible:
{{variable}} reference or merged input-template binding). Flag any variable visible in the UI whose effective value is a hardcoded literal in stream.yml.hbs — user edits to that field will not apply.Report:
data_stream.dataset and output_permissions index names (e.g. metrics-<dataset>-ep); confirm every Fleet-visible variable maps to the rendered agent template| Gap | Tracking |
|---|---|
| Variables visible in UI but ignored by template | elastic/integrations#19719 |
| No integration-level opt-out for input variables | Future enhancement |
{{ inputDocs }} empty for streams[].package | elastic/elastic-package#3696 |
Dataset variable vs manifest dataset: field | elastic/elastic-package#3713, elastic/elastic-package#3719, elastic/kibana#275312 |
Mark each item done or N/A:
format_version ≥ 3.6.5 and requires.input pinned to a published input versiondataset: explicitly set on the data stream manifest when it must differ from the input defaultstream.yml.hbs contains only integration-owned template fragments; integration-specific or overridden values use {{variable}} references, not hardcoded literals that bypass Fleetvars for categories A/B, inherit input defaults when acceptable (category C) — avoid silent template hardcoding that leaves misleading values in the Fleet UIstreams[].vars, not silent template hardcodinginput: key removed; streams[].package in place_dev/test/config.yml declares requires for local input package during developmentenabled: false where required); spot-check in Fleet when policy tests do not cover a variablebreaking-change when mapping type updates affect existing indices){{ inputDocs }} is emptySuitable input package + stack 3.6+? → Gate 0 must pass before migrating
Legacy var differs from input default? → B: redeclare on streams[].vars
Var only in integration template? → A: add var + {{variable}} in slim template
Input default matches legacy? → C: inherit; remove from local template/manifest
Input-only var on input package? → Classify in Gate D (often C or N/A)
Per-stream vs all-streams override? → streams[].vars vs policy_templates[].inputs[].vars
Variable intent unclear? → Who sets it, Fleet visibility, template binding — see how-to Variable overrides
Fleet UI shows var but template ignores?→ Hardcoding anti-pattern; use manifest override or document intentional
Dataset must stay stable? → dataset: on data stream manifest
Unpublished input package? → _dev/test/config.yml requires.source (tests only)
Bump input pins later? → elastic-package requires updatepackages/elastic_package_registry on main while PR #19719 is unmergedoutput_permissions index name review in policy expectationsstream.yml.hbs without developer acknowledgement → Fleet UI mismatch; variable shown in UI but user edits ignoredstream.yml.hbs for values that should be Fleet-configurable — use {{variable}} and manifest vars insteaddata_stream.dataset as a user variable when dataset: field sufficesinput: alongside new streams[].packageelastic-package test policy --generate and committing expectations without developer reviewstreams[].packagerequires.source in test config satisfies elastic-package build (build still uses registry)© elastic, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/migrate-required-input-dependency of elastic/integrations.
Open the folder on GitHubat commit a0dffc9
Migrate Required Input Dependency next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Migrate Required Input Dependency this skillelastic/integrations | 336 | — | ~4.9k | Automated safety check: Pass | Apache-2.0 | |
| Legacy Migration Plannertech-leads-club/agent-skills | 7k | — | ~1.8k | Automated safety check: Pass | CC-BY-4.0 | |
| Reversible MigrationJuliusBrussee/caveman | 110k | 1 repos | ~196 | Automated safety check: Pass | Apache-2.0 | |
| Database Migrationsaffaan-m/ECC | 275k | 4 repos | ~3k | Automated safety check: Pass | MIT | |
| Database Migrationsaffaan-m/ECC | 275k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Legacy ModernizerJeffallan/claude-skills | 12k | — | ~1.6k | Automated safety check: Pass | MIT |
tech-leads-club/agent-skills
Produces evidence-based migration plans using the Strangler Fig pattern for monolith splits, rewrites and framework upgrades, without implementing them.
JuliusBrussee/caveman
Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and…
affaan-m/ECC
Safe, reversible database migration patterns: forward-only production changes, expand-contract zero-downtime renames, concurrent indexes, batched backfills, and per-tool workflows for PostgreSQL…
affaan-m/ECC
Şema değişiklikleri, veri migration'ları, rollback'ler ve PostgreSQL, MySQL ve yaygın ORM'ler (Prisma, Drizzle, Django, TypeORM, golang-migrate) arasında sıfır kesinti deployment'ları için…
Jeffallan/claude-skills
Plans incremental migrations of aging systems with the strangler fig pattern, using dependency maps, rollback plans, characterization tests and gradual traffic shifts.
wshobson/agents
Guides migrating AngularJS 1.x apps to modern Angular: choosing a strategy, running a hybrid app with ngUpgrade, and converting controllers, directives and services.
elastic/integrations
Lint an Elastic integration package's markdown with vale and propose fixes.
Migrate an Elastic integration package from a legacy inline agent template to integrations with required input dependencies (requires.input, streams[].package). Migrate Required Input Dependency is an agent skill from elastic/integrations, published by the product's own GitHub organization.package).
Migrate Required Input Dependency fits situations like: the user asks to migrate an integration to an input package; adopt requires.input; switch to streams[].package; mentions required input dependencies.
Run `npx skills add elastic/integrations --skill migrate-required-input-dependency -a claude-code`. Or copy the skill folder (.agents/skills/migrate-required-input-dependency in elastic/integrations) into .claude/skills/migrate-required-input-dependency in your project. Claude Code loads it when a task matches its description.
Run `npx skills add elastic/integrations --skill migrate-required-input-dependency -a codex`. Or copy the skill folder (.agents/skills/migrate-required-input-dependency in elastic/integrations) into .agents/skills/migrate-required-input-dependency in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add elastic/integrations --skill migrate-required-input-dependency -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/migrate-required-input-dependency, .gemini/skills/migrate-required-input-dependency, .github/skills/migrate-required-input-dependency and .opencode/skills/migrate-required-input-dependency in your project.
SKILL.md names no scripts, command-line tools or credentials: Migrate Required Input Dependency is instructions for the agent only. Compatibility (from SKILL.md): Requires `elastic-package` CLI. Designed for packages in elastic/integrations..
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Migrate Required Input Dependency is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Migrate Required Input Dependency: Legacy Migration Planner (tech-leads-club/agent-skills, 7k stars), Reversible Migration (JuliusBrussee/caveman, 110k stars), Database Migrations (affaan-m/ECC, 275k stars) and Database Migrations (affaan-m/ECC, 275k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
elastic (a GitHub organization, an official publisher) maintains it in elastic/integrations, which has 336 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.
Source: elastic/integrations on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.