azure/azure-ai-projects-update-changelog
Update CHANGELOG.md by comparing public APIs between the current branch and the latest released version on PyPI. WHEN: \"update changelog\", \"generate changelog\", \"add changelog entry\", \"what changed in this version\". DO NOT USE FOR: other Azure SDK packages. INVOKES: PyPI API, GitHub API (for tags), file operations.
npx skills add https://github.com/Azure/azure-sdk-for-python --skill azure-ai-projects-update-changelog
This skill guides Copilot through updating the CHANGELOG.md file for the azure-ai-projects package by comparing public APIs between the current branch and the latest released version.
Working directory: sdk/ai/azure-ai-projects
The skill performs these steps:
azure/ai/projects/_version.pyRead the current version from azure/ai/projects/_version.py. The file contains a line like:
VERSION = "X.Y.Z"
Extract this version number and save it as CURRENT_VERSION.
Use the PyPI JSON API to get the latest released version:
https://pypi.org/pypi/azure-ai-projects/json
From the JSON response:
info.version as LATEST_PYPI_VERSIONCheck if CHANGELOG.md already has a section for the current version:
## {CURRENT_VERSION} (Unreleased) — we will update it## {CURRENT_VERSION} (YYYY-MM-DD) with an actual date. If the date is in the past, then this version is already released, report this to the user and stop. If it's today's date, we will update it.CURRENT_VERSION — we will create a new oneThe tag name for a released version follows this pattern:
azure-ai-projects_{VERSION}
For example, for version 2.2.0, the tag is azure-ai-projects_2.2.0.
The source code for that release can be found at:
https://github.com/Azure/azure-sdk-for-python/tree/azure-ai-projects_{VERSION}/sdk/ai/azure-ai-projects
Compare the public APIs between the current branch and the latest released version. Focus on these locations:
azure/ai/projects/models/__init__.pyCompare the __all__ list and imports in both versions to identify:
azure/ai/projects/operations/__init__.pyCompare the __all__ list to identify new or removed operation classes.
For each operations class (like AgentsOperations, BetaOperations, etc.), compare the public methods:
azure/ai/projects/operations/ and azure/ai/projects/aio/operations/_patch.py files which may define additional public methods_For significant model classes, compare public properties (attributes) between versions:
azure/ai/projects/models/_models.pyBetaOperationsThe BetaOperations class exposes beta/preview functionality. Check for:
.beta.datasets, .beta.models, .beta.routines, etc.)azure/ai/projects/operations/_patch.py and the released versionsamples/ folderCompare sample files between the current branch and the released version:
.py files recursively under samples/ in both versionssample_foo.py and sample_foo_async.py), only report the sync versionFor each new sample, provide a one-line description of what it demonstrates. Read the sample file to understand its purpose — typically the docstring at the top or the if __name__ == "__main__" block explains what it does.
Organize detected changes into these categories:
.beta.routines sub-client with routine operations: create_or_update, get, enable, ...").beta.agents for optimization jobs: create_optimization_job, get_optimization_job, ...")ExternalAgentDefinition class.")force parameter on agents.delete method.")FabricIQPreviewTool.")List breaking changes in beta methods and classes separately:
.beta.agents.get_session_files renamed to .beta.agents.list_session_files.")body in method .beta.skills.create_from_files() renamed to content.").beta.skills.create signature changed — now takes name and keyword inline_content: SkillInlineContent; returns SkillVersion.")AgentEndpoint to AgentEndpointConfig.")isolation_key_source removed from class EntraAuthorizationScheme.")skill_id renamed to id on class SkillDetails.")Format for beta changes:
Breaking changes in beta methods:
* ...
Breaking changes in beta classes:
* ...
This section typically contains bug fixes. Leave empty unless you have specific bug fix information to add.
List new sample files that were added, with a one-line description of what they demonstrate:
samples/ folder between current branch and released version_async.py)Added \sample_name.py\ demonstrating [brief description].Use this format for the changelog entry:
## {CURRENT_VERSION} (Unreleased)
### Features Added
* [List each feature on its own bullet point]
### Breaking Changes
Breaking changes in beta methods:
* [List method changes]
Breaking changes in beta classes:
* [List class changes]
### Bugs Fixed
* [List bug fixes, if any]
### Sample updates
* [List sample updates, if any]
Guidelines for writing entries:
.beta.agents, create_version(), AgentDetailsInsert or update the changelog entry in CHANGELOG.md:
# Release History headerAfter updating the changelog, report:
You can compare files between the current branch and a tag:
git diff azure-ai-projects_{VERSION} -- azure/ai/projects/models/__init__.py
To fetch files from the released version:
https://raw.githubusercontent.com/Azure/azure-sdk-for-python/azure-ai-projects_{VERSION}/sdk/ai/azure-ai-projects/azure/ai/projects/models/__init__.py
If a class was removed and a similar class was added, it's likely a rename. Look for:
SkillObject → SkillDetails)Here's an example of a well-formatted changelog entry:
## 2.3.0 (Unreleased)
### Features Added
* Support integration of external Agents (in preview). See new `ExternalAgentDefinition` class.
* New Agent tool in preview `FabricIQPreviewTool`.
* New Agent tool in preview `ToolboxSearchPreviewTool`.
* New methods on `.beta.agents` for
* Code-based hosted agents: `create_version_from_code`, `download_code`.
* Optimization jobs: `create_optimization_job`, `get_optimization_job`, `list_optimization_jobs`, `cancel_optimization_job`, `list_optimization_candidates`.
* Optimization candidate management: `list_optimization_candidates`, `get_optimization_candidate`, `get_optimization_candidate_config`, `get_optimization_candidate_results`, `get_candidate_file`, `promote_candidate`.
* `stop_session` to stop a running agent session.
* New `.beta.datasets` sub-client with data generation job operations: `create_generation_job`, `get_generation_job`, `list_generation_jobs`, `cancel_generation_job`, `delete_generation_job`.
* New `.beta.models` sub-client to handle AI model weights: `create`, `list_versions`, `list`, `get`, `delete`, `update`, `pending_create_version`, `pending_upload`, `get_credentials`.
* New `.beta.routines` sub-client with routine operations: `create_or_update`, `get`, `enable`, `disable`, `list`, `delete`, `list_runs`, `dispatch`.
* New methods on `.beta.evaluators` for evaluator generation jobs: `create_generation_job`, `get_generation_job`, `list_generation_jobs`, `cancel_generation_job`, `delete_generation_job`.
* New methods on `.beta.memory_stores` to handle individual memory items: `create_memory`, `update_memory`, `list_memories`, `get_memory`, `delete_memory`.
* New methods on `.beta.skills` for versioned skill management: `create`, `list_versions`, `get_version`, `download_version`, `delete_version`.
* New optional string properties `description` and `name` added to Agent tools classes which did not have them before.
* New optional `tool_configs` added to Agent tool classes.
* New read-only property `content_hash` on `CodeConfiguration`, returning the SHA-256 hex digest of the uploaded code zip.
* New optional `force` parameter on `agents.delete` and `agents.delete_version` methods.
* New optional `blueprint_reference` parameters on `agents.create_version` method.
### Breaking Changes
Breaking changes in beta methods:
* Argument `isolation_key` in methods `.beta.agents.create_session()` and `.beta.agents.delete_session()` renamed to `user_isolation_key`.
* Argument `body` in methods `.beta.evaluation_taxonomies.create()` and `.beta.evaluation_taxonomies.update()` renamed to `taxonomy`.
* Argument `body` in method `.beta.skills.create_from_files()` renamed to `content`.
* Method `.beta.agents.get_session_files` renamed to `.beta.agents.list_session_files`.
* Method `.beta.skills.create` signature changed — now takes `name` and keyword `inline_content: SkillInlineContent`; returns `SkillVersion`.
* Method `.beta.skills.create_from_package` renamed to `.beta.skills.create_from_files`.
* Method `.beta.skills.create_from_files` signature changed — now takes `name` and `content: CreateSkillVersionFromFilesBody`; returns `SkillVersion`.
* Method `.beta.skills.update` signature changed — now only accepts keyword `default_version`; returns `SkillDetails`.
Breaking changes in beta classes:
* Required property `isolation_key_source` removed from class `EntraAuthorizationScheme`.
* Renamed class `AgentEndpoint` to `AgentEndpointConfig`.
* Renamed class `DeleteSkillResponse` to `DeleteSkillResult`.
* Renamed class `SessionDirectoryListResponse` to `SessionDirectoryListResult`.
* Renamed class `SessionFileWriteResponse` to `SessionFileWriteResult`.
* Renamed class `SkillObject` to `SkillDetails`. Property `skill_id` renamed to `id`. Properties `has_blob` and `metadata` were removed.
* Renamed class `Target` to `EvaluationTarget`.
* Renamed class `TargetConfig` to `RedTeamTargetConfig`.
### Bugs Fixed
* Fixed telemetry instrumentor to correctly call is_recording() as a method on spans, ensuring non-recording spans are properly skipped (e.g., when sampling is configured) ([GitHub issue 46544](https://github.com/Azure/azure-sdk-for-python/issues/46544)).
### Sample updates
* Added new Agent tool samples `sample_agent_work_iq.py` and `sample_agent_work_iq_async.py` demonstrating use of `WorkIQPreviewTool`.
* Added new Agent tool samples `sample_agent_fabric_iq.py` and `sample_agent_fabric_iq_async.py` demonstrating use of `FabricIQPreviewTool`.
* Hosted Agents:
* Added Hosted Agent creation samples `sample_create_hosted_agent.py` and `sample_create_hosted_agent_async.py`, demonstrating hosted agent version creation and retrieval with `AIProjectClient`.
* Added Hosted Agent code-upload samples `sample_create_hosted_agent_from_code.py` and `sample_create_hosted_agent_from_code_async.py`, demonstrating uploading a code package (zip) as a new hosted agent version.
* The Hosted Agent creation sample also demonstrates assigning the hosted agent managed identity the Azure AI User RBAC role on the backing Azure AI account.
* Updated the other Hosted Agent samples to reuse an existing Hosted Agent as a prerequisite, instead of creating a new hosted agent version in each sample.
* Added Toolbox tool-search sample `sample_toolboxes_with_search_preview.py` and `sample_toolboxes_with_search_preview_async.py`, demonstrating creating a Toolbox version with `ToolboxSearchPreviewTool` and invoking `MCPTool`.
* Added `.beta.models` samples under `samples/models/`:
* `sample_models_basic.py` — synchronous end-to-end registration via the `create` helper (uses `azcopy`), followed by `get`, `list_versions`, `list`, `get_credentials`, `update`, and `delete`.
* `sample_models_create_and_poll.py` — alternative synchronous registration that hand-rolls the spec's three-step flow (`pending_upload` → upload via `azure-storage-blob` → `pending_create_version` + poll), without taking a dependency on `azcopy`.
* `sample_models_basic_async.py` — asynchronous version of the same three-step flow using `azure.ai.projects.aio.AIProjectClient` and `azure.storage.blob.aio.ContainerClient`.
* Added new evaluation sample `sample_model_evaluation_instant_model.py` demonstrating model evaluation with an instant model.
* Refreshed evaluation samples under `samples/evaluations/` and `samples/evaluations/agentic_evaluators/` (including `sample_agent_evaluation`, `sample_agent_response_evaluation`, `sample_eval_catalog_prompt_based_evaluators`, `sample_evaluations_ai_assisted`, `sample_evaluations_builtin_with_csv`, `sample_evaluations_builtin_with_dataset_id`, `sample_evaluations_builtin_with_inline_data`, `sample_evaluations_builtin_with_inline_data_oai`, `sample_scheduled_evaluations`, `sample_coherence`, `sample_fluency`, `sample_intent_resolution`, `sample_relevance`, `sample_response_completeness`, `sample_tool_call_accuracy`, `sample_tool_call_success`, `sample_tool_input_accuracy`, `sample_tool_output_utilization`, `sample_tool_selection`, and `sample_generic_agentic_evaluator`).
* New sample `sample_dataset_generation_job_simpleqna_with_prompt_source.py` showing an end-to-end flow that generates a QnA dataset via `.beta.datasets.create_generation_job` and runs an OpenAI evaluation.
Take azure/azure-ai-projects-update-changelog from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.