This prompt is designed for teams that need to produce accurate, actionable migration guides when features, APIs, or SDK methods are deprecated. It takes a deprecation notice and supporting repository context as input and produces a structured migration guide with step-by-step instructions, before/after code examples, a deprecation timeline, and rollback guidance. Use this prompt when you have a formal deprecation notice and need to generate developer-facing documentation that reduces support burden and accelerates adoption of replacement APIs. This prompt belongs in a workflow where a human reviews the output before publication, because incorrect migration instructions can break consumer builds.
Prompt
Migration Guide Generation from Deprecation Notices Prompt

When to Use This Prompt
Identify the right conditions for automating migration guide generation from deprecation notices.
The ideal user is a developer relations engineer, platform team member, or technical writer who already has a source deprecation notice and access to the relevant codebase. The prompt requires a concrete [DEPRECATION_NOTICE] input, such as a changelog entry, an RFC, or an API specification diff, along with [REPOSITORY_CONTEXT] that includes the deprecated surface and its replacement. Do not use this prompt when the replacement API is still under active design, when the deprecation timeline is not yet committed, or when you lack access to the source code of both the deprecated and replacement surfaces. In those cases, the model will produce plausible but incorrect guidance that can mislead consumers.
Before running this prompt, assemble the deprecation notice, the relevant source files, and any existing migration notes. The prompt works best when you also provide an [OUTPUT_SCHEMA] that defines the expected structure—typically including sections for a summary, a timeline, step-by-step instructions, before/after code examples, and rollback procedures. After generation, validate the output against the source code with automated checks: confirm that every deprecated method, class, or endpoint mentioned in the notice appears in the guide, that code examples compile against the current replacement API, and that the timeline matches the official deprecation policy. A human reviewer must then verify the instructions end-to-end before publication.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the Migration Guide Generation from Deprecation Notices prompt fits your workflow before you integrate it into a release pipeline.
Good Fit: Structured Deprecation Notices
Use when: you have formal deprecation notices with clear timelines, removed or replaced APIs, and migration paths. The prompt excels at transforming structured notices into step-by-step guides with before/after code examples. Guardrail: feed the prompt the actual deprecation notice text plus the relevant API reference docs to ground code examples in real signatures.
Bad Fit: Undocumented or Implicit Deprecations
Avoid when: deprecations are only implied by code removal, informal team discussions, or undocumented behavioral changes. The prompt cannot invent migration steps from missing information. Guardrail: require a human to draft a deprecation notice first, or pair this prompt with a repository exploration prompt to surface the actual diff before generating the guide.
Required Inputs
What you must provide: the deprecation notice text, the affected API surface or feature name, the deprecation date, the removal target version, and the recommended replacement. Guardrail: validate that all required fields are present before calling the prompt. A missing replacement API leaves the model guessing and produces unreliable migration steps.
Operational Risk: Hallucinated Code Examples
Risk: the model may invent plausible-looking but incorrect API signatures, method names, or import paths in before/after code examples. Guardrail: run every generated code example through a syntax validator and, where possible, a type checker against the actual API surface. Flag any example that does not match the real replacement API for human review.
Operational Risk: Incomplete Surface Coverage
Risk: a deprecation notice may affect multiple classes, methods, endpoints, or configuration keys, but the generated guide covers only the most obvious one. Guardrail: use a completeness check prompt after generation to compare the guide against the full list of deprecated surfaces from the notice. Flag gaps for manual addition.
Operational Risk: Missing Rollback Guidance
Risk: the generated guide may describe how to migrate forward but omit what to do if the migration fails in production. Guardrail: add a post-generation step that appends a rollback section if none exists, or route the output to a human reviewer who can add rollback steps before publication.
Copy-Ready Prompt Template
A reusable prompt template for generating step-by-step migration guides from deprecation notices, with placeholders for source material, target audience, and output constraints.
The following prompt template is designed to be copied directly into your AI harness or development environment. It accepts a deprecation notice, relevant API documentation, and optional constraints as inputs, then produces a structured migration guide with before/after code examples, a timeline, and rollback guidance. Every square-bracket placeholder must be replaced with actual data before sending the prompt to the model. Do not leave any placeholder unresolved in production requests—missing context produces unreliable output.
codeYou are a technical documentation engineer specializing in API migration guides. Your task is to generate a step-by-step migration guide from the deprecation notice and supporting documentation provided below. ## INPUTS [DEPRECATION_NOTICE] [API_DOCUMENTATION] [CODEBASE_EXAMPLES] ## CONSTRAINTS [CONSTRAINTS] ## OUTPUT SCHEMA Return a JSON object with the following structure: { "migration_guide": { "title": "string", "deprecated_surface": "string", "effective_date": "string (ISO 8601)", "removal_date": "string (ISO 8601 or 'TBD')", "urgency": "string (low | medium | high | critical)", "summary": "string (2-4 sentence plain-English summary of what is changing and why)", "affected_endpoints_or_interfaces": ["string"], "steps": [ { "step_number": "integer", "action": "string (clear imperative instruction)", "before_code": "string (code block showing deprecated usage)", "after_code": "string (code block showing new usage)", "notes": "string (caveats, edge cases, or alternative approaches)" } ], "rollback_steps": ["string"], "verification_checks": ["string (how to confirm migration succeeded)"], "breaking_changes": ["string (list of behaviors that will break if not migrated)"], "references": ["string (links to relevant docs, issues, or announcements)"] }, "completeness_report": { "deprecated_surfaces_covered": ["string"], "deprecated_surfaces_missed": ["string"], "confidence": "string (high | medium | low)", "gaps_notes": "string (explain any missing coverage or assumptions made)" } } ## INSTRUCTIONS 1. Parse the [DEPRECATION_NOTICE] to identify every deprecated endpoint, method, parameter, or behavior. 2. Cross-reference with [API_DOCUMENTATION] to find the replacement surface for each deprecated item. 3. Use [CODEBASE_EXAMPLES] to produce realistic before/after code snippets. If no examples are provided, generate representative examples based on the API documentation. 4. Order migration steps by dependency: foundational changes first, dependent changes later. 5. Include explicit rollback steps for each migration action where rollback is possible. 6. Flag any deprecated surface mentioned in the notice that lacks a documented replacement in the completeness report. 7. If [CONSTRAINTS] specifies a target audience, adjust code examples and language complexity accordingly. 8. Do not invent deprecation dates, version numbers, or API surfaces not present in the input materials.
Adapting the template: Replace [DEPRECATION_NOTICE] with the full text of the deprecation announcement, including any version timelines and affected surface lists. Replace [API_DOCUMENTATION] with the relevant reference docs for both the deprecated and replacement surfaces—include endpoint signatures, parameter tables, and authentication changes. Replace [CODEBASE_EXAMPLES] with real usage snippets from your codebase, or omit this section if you want the model to generate representative examples from the API docs alone. Replace [CONSTRAINTS] with audience-specific instructions such as "Target audience: frontend developers using the React SDK" or "Include only breaking changes; omit cosmetic deprecations."
Before shipping: Run this prompt against a known deprecation notice where you already have a manually written migration guide. Compare the model output to your reference guide across three dimensions: completeness (are all deprecated surfaces covered?), code correctness (do the before/after examples compile or run?), and step ordering (are dependencies respected?). If the model misses deprecated surfaces or invents replacement APIs not present in the documentation, add explicit negative constraints to the [CONSTRAINTS] block. For high-risk migrations affecting production systems, always route the generated guide through human review before publication.
Prompt Variables
Inputs the prompt needs to work reliably. Validate each before sending.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[DEPRECATION_NOTICE] | The source deprecation announcement, changelog entry, or API notice text | The /v1/users endpoint will be deprecated on 2025-09-01 and removed on 2025-12-01. Migrate to /v2/accounts. | Must be non-empty string. Check for presence of deprecation date, affected surface, and migration target. Reject if only a version number without context. |
[AFFECTED_SURFACES] | List of deprecated endpoints, methods, classes, or features to cover | ["POST /v1/users", "GET /v1/users/{id}", "UserResponse schema"] | Must be a valid JSON array of strings. Each entry must match a real identifier in the source notice. Empty array is invalid. |
[MIGRATION_TARGETS] | Replacement APIs, methods, or patterns for each deprecated surface | ["POST /v2/accounts", "GET /v2/accounts/{id}", "AccountResponse schema"] | Must be a valid JSON array of strings with same length as [AFFECTED_SURFACES]. Each target must be verifiable against the notice. Null entries allowed if no replacement exists. |
[DEPRECATION_TIMELINE] | Key dates: announcement, deprecation, sunset, removal | {"announced": "2025-06-01", "deprecated": "2025-09-01", "sunset": "2025-12-01"} | Must be valid JSON object with ISO 8601 date strings. At minimum requires deprecated and sunset dates. Reject if sunset date is before deprecation date. |
[CODE_EXAMPLES_REQUIRED] | Whether before/after code examples must be generated | Must be boolean. If true, prompt must produce at least one before/after pair per affected surface. If false, examples are optional. | |
[ROLLBACK_GUIDANCE_REQUIRED] | Whether rollback or fallback instructions must be included | Must be boolean. If true, prompt must include rollback steps for each migration path. If false, rollback section is optional. | |
[OUTPUT_FORMAT] | Desired output structure for the migration guide | "markdown" | Must be one of: "markdown", "json", "yaml". If json or yaml, validate output against schema before accepting. Markdown requires section header checks. |
[TARGET_AUDIENCE] | Developer persona or skill level the guide is written for | "backend-engineer" | Must be one of: "backend-engineer", "frontend-engineer", "full-stack", "sdk-consumer", "ops-engineer". Controls code language, depth, and assumption level in examples. |
Implementation Harness Notes
How to wire the migration guide prompt into a reliable, verifiable application or CI/CD workflow.
The Migration Guide Generation from Deprecation Notices prompt is designed to be integrated into a release automation pipeline, not used as a one-off chat interaction. The core workflow involves fetching a structured deprecation notice (or a set of notices), assembling the prompt with the required context, calling a capable model, and then running a series of validation and verification steps before the output is ever shown to a developer. The primary integration points are your CI/CD system (e.g., GitHub Actions), your internal API gateway, and your documentation platform. The prompt's value is realized only when its output is trustworthy, which requires a harness that enforces structure, factuality, and completeness.
To wire this into an application, start by defining the input contract. The [DEPRECATION_NOTICES] placeholder should be a structured JSON array, not raw text. Each object must include api_surface, deprecation_date, removal_date, reason, and replacement_guidance. This structured input allows the harness to programmatically verify that the generated guide covers every deprecated surface listed in the input. The model call itself should be wrapped in a function that enforces a strict JSON output schema using the model's native structured output capabilities (e.g., OpenAI's response_format with a JSON Schema or a tool definition). The expected output schema should include a migration_steps array, each with step_number, action, code_before, code_after, and rollback_instructions. If the model's response fails to parse against this schema, the harness must trigger a retry with a repair prompt, not silently fall back to a raw text response.
The most critical part of the harness is the post-generation verification layer. After a valid JSON output is received, a separate evaluation step must run. This step uses a factuality-checking prompt (see the 'Release Note Hallucination and Factuality Check Prompt' playbook) to verify that every code_before example in the migration guide can be traced back to a real, deprecated API surface in the input notices. Any invented or hallucinated code example is a critical failure. Additionally, a completeness check must iterate through the input [DEPRECATION_NOTICES] array and confirm that each notice has a corresponding entry in the generated guide's migration_steps. A missing step for a known deprecation is a blocking error. These checks should be implemented as automated gates in your CI pipeline, producing a pass/fail report.
For high-risk or widely-used APIs, insert a human-in-the-loop approval step after automated verification passes. The harness should publish the generated guide as a draft pull request in your documentation repository, tagging the responsible API team for review. The PR description should include the automated verification report, highlighting any low-confidence steps or warnings. Do not automatically merge and publish the guide. The final step is to log the entire interaction: the input notices, the raw prompt, the model's raw response, the parsed output, and the verification results. This audit trail is essential for debugging failures, improving the prompt over time, and demonstrating governance to compliance teams. Avoid using this prompt for security-sensitive deprecations where a migration guide could inadvertently reveal attack surfaces before a patch is widely deployed.
Expected Output Contract
Fields, format, and validation rules for the generated migration guide. Use this contract to parse, validate, and integrate the model output into your documentation pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
migration_title | string | Must be non-empty and contain the deprecated feature name. Check length <= 120 characters. | |
deprecation_notice_ref | string | Must match a valid deprecation notice ID or URL from [DEPRECATION_NOTICES]. Parse check against input list. | |
affected_surfaces | array of strings | Each entry must correspond to a deprecated class, method, endpoint, or config key listed in [DEPRECATION_NOTICES]. Schema check: array items must be strings. | |
migration_steps | array of objects | Each object must contain 'step_number' (integer), 'action' (string), 'before_code' (string or null), and 'after_code' (string or null). Schema validation required. | |
timeline | object | Must contain 'deprecation_date' (ISO 8601 string), 'removal_date' (ISO 8601 string or null), and 'recommended_migration_deadline' (ISO 8601 string or null). Date parse check. | |
rollback_guidance | string | Must describe a concrete rollback procedure or explicitly state 'No rollback path available.' Null not allowed. Check for non-empty string. | |
breaking_changes_summary | array of strings | If present, each entry must reference a specific behavioral or contract change. If absent, field must be an empty array. Schema check. | |
confidence_notes | array of objects | Each object must contain 'step_reference' (string matching a migration step) and 'confidence' (one of 'high', 'medium', 'low'). Enum check on confidence values. |
Common Failure Modes
What breaks first when generating migration guides from deprecation notices and how to guard against it.
Incomplete Surface Coverage
What to watch: The model generates migration steps for the most obvious deprecated API but misses secondary surfaces such as configuration keys, environment variables, or SDK helper methods that also changed. Guardrail: Provide a structured manifest of all deprecated surfaces as input and require the model to produce a completeness checklist mapping each deprecated item to a migration step before generating the final guide.
Hallucinated Replacement APIs
What to watch: The model invents replacement functions, parameters, or import paths that do not exist in the target version, especially when the deprecation notice does not explicitly state the replacement. Guardrail: Require every suggested replacement to be grounded in a source reference. Run a post-generation validation step that checks all code examples against the target API specification or type definitions.
Incorrect Before/After Code Examples
What to watch: Code snippets contain syntax errors, use wrong argument types, or mix old and new API patterns in a way that does not compile or run. Guardrail: Add a constraint that all code examples must be syntactically valid for the stated language and version. Run examples through a linter or parser as part of the evaluation pipeline.
Missing Rollback and Roll-Forward Guidance
What to watch: The migration guide describes how to adopt the new API but omits what to do if the migration fails in production, leaving operators without a safe recovery path. Guardrail: Require a dedicated rollback section in the output schema. Validate that every migration step with data or state changes includes a corresponding rollback instruction.
Timeline and Version Ambiguity
What to watch: The guide uses vague language like 'in a future release' or 'soon' instead of concrete deprecation and removal versions, causing teams to misjudge urgency. Guardrail: Require the output to include a timeline table with deprecation announcement version, last supported version, and planned removal version. Flag any output that uses relative or ambiguous time references.
Assumed Migration Context
What to watch: The guide assumes the reader is on the latest pre-deprecation version and skips intermediate upgrade steps, leaving teams on older versions with an incomplete path. Guardrail: Require the prompt to accept a source version input and generate version-specific migration paths. Validate that the guide explicitly states prerequisite versions and intermediate upgrade steps when the jump spans multiple releases.
Evaluation Rubric
Score each criterion on a pass/fail or 1-5 scale before shipping the migration guide prompt. Run these checks against a golden set of deprecation notices with known migration paths.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Deprecated Surface Completeness | Every deprecated class, method, endpoint, or field mentioned in the source notice appears in the guide | Missing deprecated surface; guide omits an API element listed in the deprecation notice | Diff the set of deprecated identifiers in the source against identifiers in the output; flag any source item with zero mentions |
Before/After Code Example Accuracy | Each before/after code pair compiles or parses correctly in the target language and demonstrates the exact migration change | Syntax error in example; before and after snippets are identical; example uses a different API than the one being migrated | Run each code block through a language-specific parser or linter; compare AST structure of before vs after to confirm the change matches the migration step |
Migration Step Ordering | Steps are ordered such that each step's prerequisites appear earlier in the guide; no circular dependencies | Step references a configuration or code change not yet introduced; step order would break a running system if followed sequentially | Topological sort check on step dependency graph; execute steps in a sandbox and verify no prerequisite violations |
Timeline and Version Grounding | Deprecation version, removal version, and any grace-period dates match the source notice exactly | Incorrect version number; invented future date; missing removal timeline when source provides one | Regex extract all version strings and dates from output; compare against source notice values; flag any mismatch or hallucinated date |
Rollback and Revert Guidance | Every irreversible migration step includes explicit rollback instructions or a clear statement that rollback is not possible | Irreversible step described without rollback warning; rollback steps reference commands or states that don't exist | For each step tagged as state-mutating, assert presence of a rollback block or explicit no-rollback warning; validate rollback commands against known tool schemas |
Hallucinated API Surface Detection | Zero references to APIs, parameters, or types not present in the source deprecation notice or the target replacement documentation | Guide recommends a replacement function that doesn't exist; invents a configuration flag; references a future version's API | Cross-reference every code-level identifier in the output against the source notice and the official API reference for the target version; flag any identifier not found in either |
Edge Case and Constraint Coverage | Guide addresses known edge cases: null inputs, empty collections, concurrent access, rate limits, and authentication scope changes where applicable | Guide assumes happy path only; no mention of error handling changes; silent on behavior differences under load or with invalid input | Checklist audit: for each deprecated surface, verify the guide mentions behavior differences, error handling, or constraints if the source notice or API docs indicate them |
Output Schema Compliance | Output matches the defined [OUTPUT_SCHEMA] with all required fields present and correctly typed | Missing required field; field type mismatch; extra top-level keys not in schema; malformed JSON | Validate output against the JSON Schema definition; reject on schema violation; check enum values against allowed sets |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a single deprecation notice. Remove strict output schema requirements and let the model produce freeform Markdown. Use a lightweight model call without retries or validation.
codeGenerate a migration guide from this deprecation notice: [DEPRECATION_NOTICE] Include before/after code examples and a timeline.
Watch for
- Missing code examples or vague placeholder snippets
- Timeline references that don't match the actual deprecation schedule
- Overly broad instructions producing generic advice instead of API-specific steps

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us