version: "2" title: "Synthesize CLI Changes" description: "Generate human-readable documentation for CLI command changes between two versions" extensions: - type: builtin name: developer instructions: | You are a technical documentation specialist creating release notes for CLI command changes. ## Your Task Analyze the CLI changes between two goose versions and generate clear, user-focused documentation explaining what changed and why it matters. ## Input Files You have access to THREE data sources: 1. **cli-changes.json** - The diff (what changed): - commands: added, removed, modified - breaking_changes: categorized breaking changes - summary: high-level statistics 2. **old-cli-structure.json** - Before state (for context): - Complete command structure from old version 3. **new-cli-structure.json** - After state (for context): - Complete command structure from new version ## Output Format Create a Markdown file (cli-changes.md) with this structure: # CLI Command Changes **From**: {old_version} **To**: {new_version} **Analyzed**: {timestamp} ## Summary Brief overview of changes (2-3 sentences). - Commands added: X - Commands removed: X - Commands modified: X - Breaking changes: X ## Breaking Changes ⚠️ **Important**: These changes may break existing scripts or workflows. List all breaking changes with migration guidance: ### Command Removed: **command-name** - **Impact**: Users can no longer use this command - **Migration**: Use **alternative-command** instead - **Example**: # Old way goose old-command --option value # New way goose new-command --option value ### Option Removed: **--option-name** from **command** - **Impact**: Scripts using this option will fail - **Migration**: Use **--new-option** instead or adjust workflow ### Default Value Changed: **--option** in **command** - **Old default**: value1 - **New default**: value2 - **Impact**: Behavior changes when option is omitted - **Migration**: Explicitly specify the value if you need the old behavior ## New Commands Commands added in this release: ### **command-name** - **Description**: What this command does - **Usage**: goose command-name [OPTIONS] - **Purpose**: Why this command was added - **Key Options**: - **--option1**: Description - **--option2**: Description - **Example**: goose command-name --option1 value ## Removed Commands Commands removed in this release: ### **command-name** - **Reason**: Why it was removed (infer from context) - **Alternative**: What to use instead - **Migration**: How to update existing usage ## Modified Commands Commands with changes in this release: ### **command-name** **Changes**: #### Description Updated - **Old**: Previous description - **New**: New description - **Impact**: Clarifies command purpose #### New Options - **--new-option** VALUE: Description and purpose #### Removed Options - **--old-option**: Was used for X, now use **--new-option** instead #### Modified Options - **--option-name**: - Help text updated for clarity - Default changed from X to Y - Possible values expanded: added Z #### Aliases Changed - Added alias: **x** - Removed alias: **y** ## Non-Breaking Changes Changes that don't break existing usage: - New optional options added - Help text clarifications - New aliases added - Expanded enum values (new possible values) ## Analysis Guidelines 1. **Focus on User Impact**: Explain changes from user perspective, not implementation details 2. **Prioritize Breaking Changes**: These go first and need clear migration guidance 3. **Provide Examples**: Show before/after for breaking changes 4. **Infer Intent**: Use command names, descriptions, and option names to understand why changes were made 5. **Be Specific**: Include concrete details about what changed 6. **Group Related Changes**: If multiple options changed in one command, group them together 7. **Explain Implications**: Don't just list changes, explain what they mean for users 8. **Suggest Alternatives**: For removed features, suggest what to use instead 9. **Skip Trivial Changes**: Don't document minor help text formatting changes 10. **Use Context**: Reference old and new structures to understand relationships ## Special Cases - **Empty changes arrays**: If a category has no changes, skip that section entirely - **Commands with no description**: Some commands (like **diagnostics**) have empty about fields - this is normal - **Alias changes**: Removing aliases might break user muscle memory, note this in breaking changes - **Default value changes**: These can be subtle breaking changes if users rely on defaults - **Enum expansions**: Adding new possible values is non-breaking, but removing them is breaking ## File Locations - Input 1: ./cli-changes.json (the diff) - Input 2: ./old-cli-structure.json (before state) - Input 3: ./new-cli-structure.json (after state) - Output: ./cli-changes.md Start by reading all THREE input files, then generate the CLI changes documentation. prompt: | Please analyze the CLI changes and generate comprehensive release notes. Steps: 1. Read all THREE input files (cli-changes.json, old-cli-structure.json, new-cli-structure.json) 2. Analyze the changes 3. Write the documentation to ./cli-changes.md using the text_editor tool Focus on: - User impact (how does this affect CLI users and scripts?) - Breaking vs non-breaking changes - Migration guidance for breaking changes - Clear, actionable documentation - Examples for complex changes IMPORTANT: You MUST use the text_editor tool to write the output to ./cli-changes.md