This prompt is designed for product managers, CLI maintainers, and developer relations engineers who need to draft a formal deprecation notice for a flag, subcommand, or behavioral change in a command-line tool. The core job-to-be-done is transforming a raw engineering decision—'we are removing --old-flag in v3'—into a structured, user-facing communication artifact that includes a clear timeline, migration commands, and an impact assessment. It is not a general-purpose announcement writer; it is a precision tool for technical surfaces where an incorrect or vague notice can break downstream CI/CD pipelines and automation scripts.
Prompt
CLI Deprecation Notice Drafting Prompt

When to Use This Prompt
Defines the job, ideal user, and constraints for generating structured CLI deprecation notices.
Use this prompt when you have a specific, scoped deprecation target and know the replacement path. The ideal user provides concrete context: the exact deprecated surface, the version where deprecation begins, the version where removal occurs, and the verified replacement command or behavior. The prompt requires a [DEPRECATION_TARGET] (e.g., --old-auth), a [REPLACEMENT_GUIDANCE] (e.g., Use --new-auth with an OAuth token), and a [VERSION_TIMELINE] (e.g., Deprecated in v2.5, removed in v3.0). The harness should validate that the replacement command actually executes successfully against the current CLI build before the notice is published, preventing the most common failure mode: recommending a migration path that is already broken.
Do not use this prompt for marketing announcements, blog posts, or high-level product sunsetting emails. It is also unsuitable when the replacement path is unknown, the timeline is speculative, or the deprecation affects a broad behavioral change without a direct command mapping. In those cases, a human must first resolve the ambiguity. The output is a structured notice, not a legal document; for regulated industries, always route the final draft through legal and product review. After generating the notice, immediately run the [REPLACEMENT_GUIDANCE] commands in a CI environment to confirm they exit with code 0 and produce the expected output, then attach the validation log to the notice before publication.
Use Case Fit
Where this prompt works, where it fails, and what inputs it assumes for drafting CLI deprecation notices.
Good Fit: Structured Deprecation Workflows
Use when: you have a clear deprecation timeline, a known replacement command, and need a consistent notice format across multiple flags or subcommands. The prompt excels at producing a standardized notice with timeline, migration steps, and impact assessment from a structured input spec.
Bad Fit: Undiscovered or Ambiguous Replacements
Avoid when: the replacement command or migration path is unknown, under development, or varies by user context. The prompt will hallucinate plausible but incorrect migration commands. Guardrail: require a validated [REPLACEMENT_COMMAND] input field and run it against the actual CLI binary before publishing the notice.
Required Inputs: Beyond the Deprecated Surface
Risk: an incomplete notice that misses affected subcommands, scripts, or environment variable interactions. Guardrail: the prompt must receive [DEPRECATED_SURFACE], [REPLACEMENT_COMMAND], [TIMELINE], [AFFECTED_VERSIONS], and [IMPACT_ASSESSMENT] as explicit inputs. Validate that every affected surface in the codebase appears in the notice.
Operational Risk: Stale Replacement Commands
Risk: the replacement command changes after the notice is published, leaving users with broken migration instructions. Guardrail: add an automated test that runs the documented replacement command against the latest CLI build on a schedule. If the command fails or output changes, flag the notice for review.
Operational Risk: Incomplete Impact Assessment
Risk: the notice understates breaking changes, causing production failures for users who follow the migration path. Guardrail: pair the prompt with a CLI usage audit that identifies all internal scripts, CI pipelines, and downstream consumers calling the deprecated surface. Include affected consumers in the notice.
Boundary: When to Escalate to a Migration Guide
Risk: a deprecation notice is treated as sufficient documentation when users actually need a full migration guide with before/after examples, rollback steps, and troubleshooting. Guardrail: if the deprecation spans multiple major versions or requires config file changes, route to the CLI Version Migration Guide Prompt instead of relying on a single notice.
Copy-Ready Prompt Template
A reusable prompt template with square-bracket placeholders for drafting structured CLI deprecation notices.
This template is the core instruction set you will send to the model. It is designed to be copied directly into your prompt management system, test harness, or application code. Every variable is enclosed in square brackets, such as [DEPRECATED_SURFACE], and must be replaced with concrete values before execution. The prompt enforces a strict output structure, requires a migration command that can be validated, and asks the model to assess user impact rather than just announcing a change.
textYou are a technical product manager and CLI maintainer drafting a deprecation notice for a command-line tool. Your goal is to produce a clear, actionable notice that minimizes user surprise and provides a verified migration path. ## Inputs - Deprecated Surface: [DEPRECATED_SURFACE] - CLI Tool Name: [TOOL_NAME] - Target Removal Version: [REMOVAL_VERSION] - Current Version: [CURRENT_VERSION] - Replacement Surface: [REPLACEMENT_SURFACE] - Migration Command Example: [MIGRATION_COMMAND] - Additional Context: [ADDITIONAL_CONTEXT] ## Constraints - Do not invent dates, versions, or commands not provided in the inputs. - If the replacement surface does not exist or the migration command is unverified, state that clearly and recommend human verification. - Use a professional, helpful tone. Do not apologize excessively. - The notice must be self-contained and suitable for a changelog, terminal warning, or documentation page. ## Output Schema Return a single JSON object with the following keys: - "headline": A one-sentence summary of the deprecation. - "affected_surfaces": An array of strings listing every flag, subcommand, or behavior being deprecated. - "timeline": An object with keys "deprecated_in", "removed_in", and "recommended_action_by". - "replacement_guidance": A string explaining the new way to achieve the same outcome. - "migration_command": The exact, copy-pasteable command users should run to migrate. - "impact_assessment": A string describing who is affected, how many calls or workflows are likely impacted, and the severity. - "human_review_required": A boolean set to true if the migration command has not been verified against the current CLI version. ## Examples Input: Deprecated Surface: `--old-format csv`, Tool: `data-cli`, Removal Version: `v2.0.0`, Replacement: `--format csv --engine v2` Output: {"headline": "The `--old-format` flag is deprecated and will be removed in data-cli v2.0.0", ...} Now, draft the deprecation notice for the provided inputs.
To adapt this template, replace every square-bracket placeholder with data from your release tracking system or CLI introspection harness. The [MIGRATION_COMMAND] field is the most critical: it must be a command that your test suite has executed successfully against the replacement surface. If you cannot provide a verified command, set the input to "UNVERIFIED" and the model will flag human_review_required as true. For production use, store this prompt in a version-controlled prompt library and pair it with a post-generation validator that checks the output JSON schema, confirms the migration command is present, and escalates any notice where human_review_required is true to a review queue before publication.
Prompt Variables
Every input the prompt needs to produce a complete and actionable deprecation notice. Wire these variables into your application harness before calling the model.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[DEPRECATED_SURFACE] | Identifies the exact flag, subcommand, or behavior being deprecated. |
| Must match a real surface in the current CLI version. Parse check against |
[DEPRECATION_VERSION] | The CLI version where the deprecation warning first appears. |
| Must be a valid semver string. Schema check: |
[REMOVAL_VERSION] | The planned CLI version where the surface will be removed entirely. |
| Must be a valid semver string greater than [DEPRECATION_VERSION]. Schema check required. |
[REPLACEMENT_COMMAND] | The exact command users should run instead. Null if no direct replacement exists. |
| Must be a valid command in the current CLI version. Execute check: run command and verify exit code 0. Null allowed only if [MIGRATION_GUIDE_URL] is provided. |
[AFFECTED_WORKFLOWS] | List of common user workflows or scripts that will break after removal. | CI/CD pipeline deploy step; local dev setup script; onboarding runbook | Must contain at least one item. Each item should be a concrete workflow name, not a generic category. Approval required if list exceeds 5 items. |
[MIGRATION_GUIDE_URL] | Link to the full migration guide with step-by-step instructions. |
| Must be a valid URL. Fetch check: verify the URL returns HTTP 200. Required if [REPLACEMENT_COMMAND] is null. |
[IMPACT_SEVERITY] | Classification of how disruptive the removal will be for users. |
| Must be one of: |
[NOTICE_CHANNEL] | The distribution channel where this notice will be published. |
| Must be at least one valid channel. Multi-channel requires confirmation that each channel's template is compatible with the generated notice format. |
Implementation Harness Notes
How to wire the CLI Deprecation Notice Drafting Prompt into a release workflow with validation, testing, and human review.
This prompt is not a standalone text generator; it is a component in a deprecation communication pipeline. The harness must enforce that every generated notice is grounded in a concrete, machine-readable change manifest—such as a JSON list of deprecated flags, subcommands, or behaviors extracted directly from the CLI's source code or changelog. The prompt's [DEPRECATED_SURFACES] placeholder should be populated programmatically from this manifest, not typed by hand. This prevents the most common failure mode: a beautifully written notice that omits a deprecated flag because the author forgot to list it.
The implementation harness should run three validation gates before any notice reaches a human reviewer. First, a coverage check compares the set of deprecated surfaces mentioned in the generated notice against the input manifest and flags any missing items. Second, a command execution test extracts every --replacement-command or migration snippet from the notice and runs it in a sandboxed environment against the target CLI version to verify it exits successfully and produces the expected output. Third, a timeline consistency check parses all dates in the notice and confirms they are logically ordered (warning date < deprecation date < removal date) and not in the past. If any gate fails, the system should route the notice back for regeneration with the specific failure details injected into the [CONSTRAINTS] field.
Human review remains essential because deprecation notices carry product and customer relationship risk. The harness should present the validated notice alongside a diff of the change manifest, the results of the three automated gates, and a checklist for the reviewer: confirm the tone matches the project's communication policy, verify the migration timeline accounts for customer upgrade cycles, and approve the escalation contact information. Only after explicit approval should the notice be published to changelogs, documentation sites, or direct customer communications. Do not automate publication without this review step, as a premature or incorrectly scoped deprecation notice can erode trust with your most invested users.
Expected Output Contract
Defines the required structure, fields, and validation rules for the deprecation notice generated by the prompt. Use this contract to parse, validate, and integrate the model's output into downstream systems or review queues.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
deprecation_notice | object | Top-level key must be present and parse as valid JSON object. | |
deprecation_notice.title | string | Must match regex | |
deprecation_notice.effective_date | string (ISO 8601) | Must be a valid future date. Parse with | |
deprecation_notice.removal_date | string (ISO 8601) or null | If not null, must be a valid date after | |
deprecation_notice.replacement | object | Must contain at least one of | |
deprecation_notice.migration_steps | array of strings | Array must contain at least one item. Each item must be a non-empty string starting with a verb. | |
deprecation_notice.impact_scope | array of strings | Must be an array of predefined enums: | |
deprecation_notice.approval_status | string | Must be exactly |
Common Failure Modes
What breaks first when generating deprecation notices and how to guard against it.
Missing Affected Surfaces
What to watch: The prompt lists the primary flag but misses aliases, environment variables, config file keys, or subcommand-specific variants that also trigger the deprecated behavior. Guardrail: Require a structured inventory of all affected surfaces as a mandatory input field before generating the notice. Validate the output against this inventory.
Non-Functional Replacement Commands
What to watch: The model confidently suggests a --new-flag replacement that doesn't exist, has different argument semantics, or produces incompatible output. Guardrail: Execute every suggested replacement command in a sandboxed test harness. Flag any command that returns a non-zero exit code or unexpected output schema.
Vague or Missing Timeline
What to watch: The notice uses fuzzy language like "in a future release" or "soon" instead of specific version numbers and dates. This creates operational risk for downstream consumers. Guardrail: Constrain the prompt to require explicit version numbers and dates in a structured timeline schema. Reject outputs that contain relative time references.
Incorrect Impact Assessment
What to watch: The model downplays breaking changes as "minor" or inflates cosmetic changes into critical warnings, eroding trust in the notice system. Guardrail: Classify impact using a predefined rubric based on behavioral change, not textual sentiment. Validate against a checklist: does the change break scripts? Does it alter output format? Does it require manual intervention?
Hallucinated Migration Scripts
What to watch: The prompt invents a sed one-liner or migration script that corrupts user configs, misses edge cases, or operates on the wrong file paths. Guardrail: Never ship generated migration commands without human review. Test all suggested scripts against a matrix of realistic config file variants and flag any destructive operations.
Inconsistent Tone Across Notices
What to watch: One notice is alarmist, another is too casual, and a third buries the deprecation in a wall of text. Inconsistent tone confuses users about urgency. Guardrail: Include a tone specification in the prompt with a required structure: severity label, one-sentence summary, timeline, replacement, and impact. Validate output against a tone checklist before publication.
Evaluation Rubric
Criteria for testing deprecation notice quality before publishing to downstream consumers. Use this rubric in automated eval harnesses or manual review checklists.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Timeline Completeness | Notice includes deprecation date, removal date, and any intermediate milestone dates in ISO 8601 format | Missing any required date field or dates are ambiguous (e.g., 'next quarter') | Schema validation: check for [DEPRECATION_DATE], [REMOVAL_DATE], [LAST_SUPPORTED_VERSION] fields populated with valid dates |
Replacement Coverage | Every deprecated surface (flag, subcommand, behavior) maps to exactly one replacement with a working migration command | Deprecated item has no replacement listed, or replacement command fails when executed | Automated test: run each [REPLACEMENT_COMMAND] against current CLI version, assert exit code 0 |
Impact Assessment Accuracy | Notice correctly identifies all affected surfaces: flags, subcommands, environment variables, config keys, and output formats | Surface documented in code but missing from notice, or notice claims impact on surface not actually affected | Diff check: compare [AFFECTED_SURFACES] list against grep of deprecation annotations in source code |
Migration Command Validity | Every [MIGRATION_COMMAND] is copy-pasteable, uses correct flag syntax, and produces equivalent behavior to the deprecated command | Migration command uses removed flags, incorrect subcommand paths, or produces different output | Execute each migration command in test harness, compare stdout/stderr/exit code against deprecated command baseline |
Version Boundary Clarity | Notice specifies exact version where deprecation warning first appears and version where removal occurs | Version numbers are missing, use vague ranges, or conflict with release tags | Parse check: [FIRST_WARNING_VERSION] and [REMOVAL_VERSION] match semver pattern and exist in git tags |
Breaking Change Flag | Notice explicitly states whether the removal is a breaking change with MAJOR/MINOR/PATCH severity classification | Breaking change severity is unstated, or classified incorrectly per semver conventions | Rule check: if removal changes CLI contract, [BREAKING_CHANGE] must be true and [SEVERITY] must be MAJOR |
Rollback and Contingency Guidance | Notice includes steps to restore previous behavior if removal causes production issues, including exact command or config change | No rollback instructions provided, or instructions reference already-removed functionality | Manual review: verify [ROLLBACK_STEPS] can be executed against version before removal date |
Consumer Communication Readiness | Notice includes target audience, recommended action timeline, and escalation contact for questions | Missing [AUDIENCE], [ACTION_DEADLINE], or [ESCALATION_CONTACT] fields | Schema check: all three fields non-null and [ESCALATION_CONTACT] contains valid email or Slack channel format |
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
Use the base prompt with a single deprecation scope and lighter validation. Remove the [OUTPUT_SCHEMA] constraint and accept free-text markdown output. Replace [AFFECTED_SURFACES] with a simple list of flags or subcommands. Skip the migration command verification step.
Watch for
- Missing timeline dates or vague "in a future release" language
- Replacement commands that don't actually work when tested manually
- Overlooking stdin/stdout behavior changes that break scripts

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