Python Agents Just Got Smarter: Agent Skills Is Now Officially Production-Ready

Microsoft has officially released Agent Skills for Python as a stable, production-ready API inside the Microsoft Agent Framework. If you’ve been holding off on building agent-powered applications because of experimental APIs, it’s time to take a second look.

What Are Agent Skills?

Agent Skills is an open format for bundling domain expertise — instructions, reference documents, and executable scripts — into reusable packages that agents load on demand. Instead of cramming everything into a single system prompt, an agent advertises available skill names, then progressively loads only what it needs for the current task. The result: a leaner context window and agents that stay fast and focused.

Each skill is described by a SKILL.md file (for file-based skills) or equivalent code properties. The agent moves through four stages: advertise → load instructions → read resources → run scripts — fetching only what’s relevant for the job at hand.

Three Ways to Build Skills

The release supports three authoring styles, all treated identically at runtime:

  • File-based skills — A directory containing a SKILL.md, optional scripts, and supporting documents. Ideal for cross-functional teams maintaining skills in a shared repository.
  • Class-based skills — Python classes that package instructions and scripts, distributable via internal PyPI feeds like any other Python package.
  • Code-defined skills — Skills created directly in application code, useful when a skill must be generated dynamically or needs to close over application state.

Built for Enterprise Use

Production readiness means more than a stable API. This release ships with the governance controls enterprises need:

  • Human-in-the-loop approval — The three core skill tools require explicit approval by default. Selectively relax approval for trusted, read-only operations.
  • Controlled script execution — File-based scripts are delegated to a runner you supply, giving full control over sandboxing, resource limits, and audit logging.
  • Filtering — Expose only a curated subset of a shared skill library to a specific agent, with context-aware predicates based on the requesting agent or tenant.
  • Caching — Skills resolve once and are reused, with optional per-key isolation for multi-tenant scenarios.

Real-World Use Cases

  • Policy enforcement — Package HR policies, expense rules, or IT security guidelines as skills. Agents load the right policy at query time for consistent, grounded answers.
  • Support playbooks — Turn troubleshooting guides into skills so agents follow documented resolution steps every time.
  • Multi-team composition — Teams author and publish skills independently; you assemble them into a single agent with no cross-team coordination required.

Getting Started

from agent_framework import Agent, SkillsProvider
from pathlib import Path

skills_provider = SkillsProvider.from_paths(
    skill_paths=str(Path(__file__).parent / "skills"),
    disable_load_skill_approval=True,
    disable_read_skill_resource_approval=True,
)

async with Agent(client=client, instructions="You are a helpful assistant.",
                 context_providers=[skills_provider]) as agent:
    response = await agent.run("Help me with onboarding.")

Learn More

With the Python API now stable, teams can build on Agent Skills in production without worrying about breaking changes — a solid foundation for shipping governed, composable AI agents at scale.

Source: Microsoft Agent Framework Blog

Your AI Coding Agent Can Now Build and Manage Dataverse — Here’s How

The way enterprise software gets built is changing fast. Rather than manually piecing together APIs, command-line tools, and custom scripts, developers are increasingly turning to AI agents — describing what they need and letting the agent figure out the execution. But for that shift to work with platforms like Microsoft Dataverse, the platform itself needs to be something agents can actually understand and operate.

That’s exactly what Dataverse Skills delivers. Released as an open-source plugin for GitHub Copilot and Claude Code, Dataverse Skills gives AI coding agents deep, practical knowledge of Dataverse — from connecting and authenticating to building schemas, loading data, and running analytical queries. All of it driven by natural language.

What Are Dataverse Skills, Really?

At its core, Dataverse Skills is a plugin that teaches your coding agent how to work with Dataverse. It doesn’t expose a menu of commands for you to choose from. Instead, you describe your goal in plain English, and the agent decides which skills to apply, in what sequence, using which underlying tools.

Think of it as giving your AI agent a domain expert’s knowledge of Dataverse — without you needing to be that expert yourself.

The underlying engine uses the Power Platform CLI (PAC CLI) for authentication, solution management, and automation tasks, paired with the Dataverse Web API and Python SDK for data operations. But you never have to think about any of that. Natural language is the only interface you need.

Three Phases, One Unified Experience

The plugin’s capabilities are organized around three core phases of any Dataverse project:

1. Connect

The agent discovers your Dataverse environments, authenticates using PAC CLI or Azure CLI, registers the Dataverse MCP server, and sets up a consistent project structure. You don’t configure anything manually — the agent handles the entire discovery and initialization process.

2. Build

Once connected, the agent can scaffold full data models from scratch: tables, columns, choice fields, lookup relationships, many-to-many relationships, forms, and views. It picks the right tool for each task — MCP for quick reads, the Python SDK for bulk operations, and the Web API as needed — and registers every component into your solution automatically.

3. Operate

With the schema in place, the agent can load data, run cross-table analytical queries, and bulk-import records from CSV files. Need 50 realistic sample records with domain-specific content generated on the fly? One prompt is all it takes.

Seeing It in Action

Here’s a real example of what this looks like in practice. You open your terminal, install the plugin with a single command, and type:

“I’m building a logistics and inventory management system for Veloce Apparel. I need tables for Warehouses, Products, Suppliers, Shipments, and Incidents — with lookups, a many-to-many between Products and Suppliers, and a self-referential shipment routing chain (tracking a package’s journey through hub transfers). Create everything in a VeloceLogistics solution, load sample data, and show me which shipments are currently delayed or stuck in transit.”

From that single prompt, the agent autonomously:

  1. Discovers your Dataverse environment and configures MCP
  2. Creates the solution using PAC CLI
  3. Builds five tables with choice columns, lookups, and a many-to-many relationship
  4. Generates and runs a Python script to bulk-load realistic sample data
  5. Queries across tables to answer the business question

No toggling between documentation tabs. No manual CLI commands. No context switching. The agent orchestrates everything from end to end.

Works With Both GitHub Copilot and Claude Code

Development teams rarely standardize on a single AI coding tool. Some developers prefer GitHub Copilot; others work with Claude Code. Dataverse Skills was built with this reality in mind. Since the skills are written as plain Markdown files with YAML frontmatter — not compiled binaries or proprietary formats — the same plugin works identically in both environments.

Install it from the plugin marketplace for either agent and you get the same knowledge, the same safety checks, and the same results. One investment, both tools covered.

Open Source and Built to Extend

The project is MIT-licensed and openly available on GitHub. Each skill is a standalone Markdown file — readable, editable, and extensible without any compiled code. Teams can add new skills for their own Dataverse customizations, improve existing ones, or contribute bug fixes back via pull request. The architecture is deliberately approachable for anyone who wants to tailor it to their environment.

A Broader Shift in How Platforms Get Used

Dataverse Skills is more than a productivity tool — it signals a broader direction for enterprise platforms. As AI agents become a standard part of the developer workflow, the platforms they interact with need to be operable through intent, not just through traditional interfaces. Describing what you want and having it built, configured, and queryable in your environment is no longer a future concept. With Dataverse Skills, it’s available today.

Getting Started

Install the plugin with one command:

  • GitHub Copilot (VS Code): /plugin install dataverse@awesome-copilot
  • Claude Code: /plugin install dataverse@claude-plugins-official

Then describe your intent and let the agent do the rest.

Original article: Dataverse Skills: Your Coding Agent Now Speaks Dataverse by Suyash Kshirsagar, Microsoft.

LangChain Deep Agents: The Easiest Way to Build Reliable AI Agents

Building AI agents that can handle complex, multi-step tasks has never been easier. LangChain’s Deep Agents is a powerful agent harness that brings together everything you need to build reliable, production-ready LLM-powered agents — all in one package.

What Is Deep Agents?

Deep Agents is a standalone Python library built on top of LangChain’s core building blocks. It uses the LangGraph runtime for durable execution, streaming, human-in-the-loop interactions, and more. Think of it as an “agent harness” — the same core tool-calling loop as other agent frameworks, but with built-in capabilities that make agents reliable for real-world tasks.

Whether you’re building a coding assistant, a data analyst, or a research agent, Deep Agents gives you the infrastructure to do it right from day one.

Quickstart

Getting started is straightforward. Install the library and create your first agent in just a few lines:

# pip install -qU deepagents langchain-google-genai
from deepagents import create_deep_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_deep_agent(
model="google_genai:gemini-3.5-flash",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
# Run the agent
agent.invoke(
{"messages": [{"role": "user", "content": "what is the weather in sf"}]}
)

Core Capabilities

Deep Agents comes with six major built-in capabilities:

  • Take actions in an environment — Invoke tools, read and write files, and execute code.
  • Connect to your data — Load memories, skills, and domain knowledge at the right moment.
  • Manage growing context — Summarize history and offload large results across long runs.
  • Parallelize tasks — Delegate to general or specialized subagents running in isolated context windows.
  • Stay in the loop — Pause for human approval at critical decision points.
  • Improve over time — Update memory, skills, and prompts based on real usage.

Execution Environment

Tools and MCP Support

Pass custom functions, LangChain tools, or tools from any MCP (Model Context Protocol) server using the tools= parameter. Deep Agents fully support MCP, letting you connect to databases, APIs, file systems, and more through a standard interface.

from deepagents import create_deep_agent
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search, fetch_page, run_query],
)

Virtual Filesystem

The harness provides a configurable virtual filesystem backed by pluggable backends — in-memory state, local disk, LangGraph store, or custom backends. It supports operations like ls, read_file, write_file, edit_file, glob, and grep.

Filesystem Permissions

Declarative permission rules control which files and directories the agent can read or write. You can restrict agents to specific directories, protect sensitive files like .env, and give subagents narrower access than the parent agent.

Code Execution

Deep Agents supports two modes of code execution:

  • Sandbox backends — Expose a shell execute tool for isolated command execution. Ideal for installing dependencies, running tests, or calling CLIs.
  • Interpreters — Add an eval tool running JavaScript in a scoped QuickJS runtime. Great for lightweight data transformations and programmatic tool calling.

Context Management

Skills

Skills package specialized workflows, domain knowledge, and custom instructions for your agent. They follow the Agent Skills standard and use progressive disclosure — the agent reads skill frontmatter at startup and only loads full skill content when a task needs it, keeping startup context compact.

Memory

Memory gives your agent persistent context across conversations — coding style, preferences, conventions, and project guidelines. Memory uses AGENTS.md files and can be updated based on interactions, so preferences carry forward without restating them each session.

Summarization and Context Offloading

The harness automatically compresses conversation history and large intermediate results, isolates subagent work, and uses long-term storage to carry information across threads — all to support multi-step tasks that exceed a single context window.

Prompt Caching

For Anthropic models, Deep Agents automatically applies prompt caching to static sections of the system prompt — base agent instructions, memory, and skill content. This reduces both latency and cost on long-running agents, with no configuration required.

Delegation: Task Planning and Subagents

Deep Agents includes a built-in write_todos tool for structured task tracking with status states (pending, in_progress, completed), giving agents a lightweight planning layer for long-running work.

The subagent system allows the main agent to spin up ephemeral child agents for isolated or parallel tasks. Each subagent gets fresh context, runs autonomously to completion, and returns a single final report — keeping the parent agent’s context clean and token-efficient.

Human-in-the-Loop

Deep Agents integrates with LangGraph interrupts so you can pause for human approval on sensitive tool calls. Use the interrupt_on parameter to specify which tools require a checkpoint:

agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
tools=[edit_file, deploy],
interrupt_on={"edit_file": True}, # Pause before every file edit
)

This gives you a runtime safety layer for destructive operations, expensive API calls, and interactive debugging.

Observability with LangSmith

Deep Agents integrates seamlessly with LangSmith for tracing requests, debugging agent behavior, and evaluating outputs. When you’re ready to move to production, LangSmith provides full deployment and monitoring options.

Getting Started

Deep Agents is the right choice if you want a batteries-included agent framework that handles the hard parts — context management, memory, subagent delegation, and human oversight — so you can focus on building what matters.

Source: LangChain Deep Agents Documentation

Git hub co pilot – A simple Introduction

Git Hub Copilot: A Simple Introduction

If you’re a software developer, chances are you’ve heard of GitHub and its ecosystem of tools and services. Recently, GitHub introduced Copilot, a powerful new feature that aims to change the way developers write code. In this blog post, we’ll explore what GitHub Copilot is, how it works, and what benefits it offers to the development community.

What is GitHub Copilot?

GitHub Copilot is an AI-powered pair programmer developed by GitHub and Microsoft. It suggests code snippets as you type, helping you to write more efficient and elegant code. The idea behind Copilot is to assist developers in their coding process by automating repetitive tasks and providing insights that can enhance the overall quality of the codebase.

How Does Copilot Work?

Copilot operates by analyzing the code in your repository and the vast amount of open-source code available on GitHub. It then uses this information to generate relevant code suggestions based on the context of your current work. The suggestions are dynamically updated as you code, offering real-time assistance throughout your development process.

Key Features

  • Code Completion: Copilot predicts and suggests code as you type, saving you time and effort.
  • Contextual Suggestions: The suggestions are contextually relevant, making them more useful and applicable to your specific coding situation.
  • Integration: Copilot integrates seamlessly with GitHub and Visual Studio Code, making it easy to use alongside your existing tools.
  • Customization: You can control the suggestions and fine-tune the AI to better suit your coding style.

Benefits of Using GitHub Copilot

  1. Enhanced Productivity: By automating the generation of code snippets, Copilot allows developers to focus more on the high-level logic of their applications rather than the minutiae.
  2. Code Quality: Copilot suggests well-structured and optimized code, which can lead to a more maintainable and efficient codebase.
  3. Learning Opportunities: For beginners or those looking to improve their coding skills, Copilot can provide valuable insights and examples.
  4. Collaborative Coding: Copilot can be used in pair programming scenarios, where multiple developers can work together on a codebase, improving the overall quality of the code.

Getting Started with GitHub Copilot

To start using Copilot, you’ll need to sign up for a GitHub account and install the GitHub desktop app or integrate it with Visual Studio Code. Once set up, simply open your repository and start coding. Copilot will begin offering suggestions as you type.

Tips for Using Copilot Effectively

  • Experiment with Suggestions: Try accepting and integrating Copilot’s suggestions to see how they fit into your code.
  • Customize Settings: Adjust Copilot’s preferences to better align with your coding style and preferences.
  • Review and Modify: While Copilot can save time, always review and modify the suggested code to ensure it meets your project’s requirements.

Conclusion

GitHub Copilot is a fascinating tool that leverages AI to assist developers in their coding journey. By providing real-time code suggestions and insights, Copilot can significantly enhance productivity and code quality. Whether you’re a seasoned developer or just starting out, Copilot is worth exploring to see how it can benefit your projects.

Are you ready to try GitHub Copilot? Sign up for a GitHub account and give it a go. Who knows, it might just change the way you write code!

Specify custom location for Ollama CLI

You’ll need to use the installer’s executable file along with the /DIR parameter to specify your desired directory. For example, if you’re using windows & ollamasetup.exe and you want to install the software in a folder called ollama on your D: drive, you would enter the following command: ollamasetup.exe /DIR="d:/ollama"

To know all parameters type cd to the directory of ollamasetup and type ollamasetup.exe /help or ollamasetup.exe /?


Statistics and Data Analysis Terminnologies-I

Variance

Variance in mathematics is a measure of how spread out the values in a set of data are. It quantifies the average squared deviation of each data point from the mean (average) of the dataset. In simpler terms, it tells us how far individual data points are from the center of the data.

The formula for variance is:

Where:

Higher variance means the data points are more spread out, while lower variance indicates they are closer to the mean.

Standard Deviation

Standard deviation tells us how much data points tend to deviate from the mean on average. A small standard deviation indicates that the data points are clustered closely around the mean, whereas a large standard deviation shows that the data points are spread out.

Example

Alright, let’s walk through an example to make the concept of standard deviation clearer!

Imagine you have the test scores of five students in a math exam: 80, 85, 90, 95, and 100. Here’s how we calculate the standard deviation step by step:

Step 1: Find the Mean

The mean ((\mu)) is the average of the data:
$$\mu = \frac{80 + 85 + 90 + 95 + 100}{5} = 90$$

Step 2: Calculate Deviations from the Mean

Subtract the mean from each score to find the deviations:

  • (80 – 90 = -10)
  • (85 – 90 = -5)
  • (90 – 90 = 0)
  • (95 – 90 = 5)
  • (100 – 90 = 10)

Step 3: Square Each Deviation

Square the deviations to eliminate negative values:


Step 4: Find the Average of the Squared Deviations

Add up the squared deviations and divide by the total number of data points ((n = 5)):
$$\text{Variance} (\sigma^2) = \frac{100 + 25 + 0 + 25 + 100}{5} = 50$$

Step 5: Take the Square Root of the Variance

The square root of the variance gives us the standard deviation:
$$\sigma = \sqrt{50} \approx 7.07$$

Final Result:

The standard deviation is approximately 7.07. This means that, on average, the test scores deviate from the mean by about 7.07 points.

Now, with this example, you see how the standard deviation helps visualize the spread of scores

Moving Averages

The moving averages method is a statistical technique used to analyze time-series data by smoothing out short-term fluctuations and highlighting trends or patterns over time. It’s often applied in fields like finance, economics, and sales forecasting.

Here’s how it works:

  1. Determine the Window: Choose the number of data points (known as the “window”) you want to consider for calculating the average. For example, you might decide on a 3-month or 5-day moving average.
  2. Calculate the Average: For each period, calculate the average of the chosen number of data points. This average is the moving average for that period.
  3. Shift the Window: Move the window one period forward (e.g., from days 1–5 to days 2–6) and calculate the next average.
  4. Repeat: Continue shifting the window and calculating averages across the entire dataset.

The result is a new series of data (the moving averages), which smooths out random variations in the original data, allowing you to better understand trends.

There are different types of moving averages:

  • Simple Moving Average (SMA): Equal weight is given to all data points in the window.
  • Weighted Moving Average (WMA): More weight is given to recent data points.
  • Exponential Moving Average (EMA): Uses a formula to give progressively more weight to recent data points.
sample c# code for moving averages
// Simple moving average calculation 
double[] data = { 10, 12, 14, 16, 18, 20, 22, 24, 26, 28 }; 
int windowSize = 3; 
double[] movingAverages = new double[data.Length - windowSize + 1]; 
for (int i = 0; i < movingAverages.Length; i++) { 
              movingAverages[i] = data.Skip(i).Take(windowSize).Average(); 
} 
Console.WriteLine("Moving Averages: " + string.Join(", ", movingAverages));
Explanation

Sure! Let me break down the code for you step by step:

Purpose

This code calculates the Simple Moving Average (SMA) of an array of numbers, given a specified window size.


Variables and Initialization

  1. double[] data:
    This array holds the input data (in this case, {10, 12, 14, 16, 18, 20, 22, 24, 26, 28}), which represents a time-series or sequential dataset.
  2. int windowSize:
    This is the size of the moving average window, set to 3. It determines how many consecutive numbers are used to calculate each average.
  3. double[] movingAverages:
    This array will store the computed moving averages. Its length is:
    $$\text{Length of data array} – \text{windowSize} + 1$$
    This ensures that the moving average calculation stops when the remaining data is insufficient to fill the window.

Loop Logic

The for loop iterates through the data array to calculate the moving averages:

  1. Iteration:
    The loop runs from i = 0 to i < movingAverages.Length. During each iteration, it computes the average of a specific slice (sub-array) of the input data.
  2. data.Skip(i).Take(windowSize):
  • Skip(i): Skips the first i elements of the data array.
  • Take(windowSize): Takes the next windowSize elements starting from the current position.
    For example:
  • At i = 0: Takes {10, 12, 14}
  • At i = 1: Takes {12, 14, 16}
  • At i = 2: Takes {14, 16, 18}, and so on.
  1. .Average():
    Computes the average of the selected windowSize elements and stores it in the movingAverages[i] array.

Output

After the loop finishes, all the calculated moving averages are stored in the movingAverages array. Finally, the code prints them using:

Console.WriteLine("Moving Averages: " + string.Join(", ", movingAverages));

This will output the moving averages as a comma-separated list.


Example

For the given data array and windowSize = 3:

  • Moving average for {10, 12, 14} = ((10 + 12 + 14) / 3 = 12)
  • Moving average for {12, 14, 16} = ((12 + 14 + 16) / 3 = 14)
  • Moving average for {14, 16, 18} = ((14 + 16 + 18) / 3 = 16)
  • And so on.

The final output will be:

Moving Averages: 12, 14, 16, 18, 20, 22, 24, 26

The Skip(i) function is used to shift the starting position of the window when calculating moving averages. Here’s why it’s necessary:

  • In the first iteration (i = 0), we want to start the window at the beginning of the data array, which includes the first three elements (e.g., {10, 12, 14}).
  • In the next iteration (i = 1), we want the window to move forward by one position, so it starts at the second element and includes the next three elements (e.g., {12, 14, 16}).
  • This shifting process continues for each subsequent iteration, ensuring that each moving average is calculated using the right set of consecutive numbers.

Without Skip(i), the function would always start from the beginning of the array, and you’d end up calculating the same average repeatedly instead of progressively shifting the window. By skipping i elements, the window moves forward as intended, covering all possible sets of data points.

In the first iteration ((i = 0)), nothing is skipped because (Skip(0)) means “skip zero elements”—essentially, it starts at the beginning of the array, so it includes 10, 12, and 14 as intended.

The confusion might stem from interpreting Skip(i) too literally. Here’s what happens step by step:

  • At (i = 0), data.Skip(0) takes the array as-is (no skipping), so it starts with {10, 12, 14}.
  • At (i = 1), data.Skip(1) skips the first element (10), resulting in {12, 14, 16} being taken.
  • At (i = 2), data.Skip(2) skips the first two elements (10, 12), resulting in {14, 16, 18} being taken.

The Skip(i) ensures the window shifts correctly as the loop progresses. But in the first iteration, nothing is skipped, and 10 is included in the moving average calculation.

Convolution

What is Convolution?

Convolution is a mathematical operation that combines two sequences (arrays) to produce a new sequence. It essentially slides one sequence (called the “kernel” or “filter”) across another sequence (the “input data”) and calculates weighted sums at each step.

Simple Example

Let’s use a very basic case:

Input Data:

Imagine you have the sequence:

Kernel (Filter):

The kernel is a smaller sequence:

How Convolution Works:

The kernel slides across the input data. At each position, we multiply the kernel values by the corresponding input values and sum them up.


Step-by-Step Calculation

Step 1: First Position

Align the kernel with the first three values of the input:
[ [1, 2, 3] ]
Multiply each input value by the corresponding kernel value:

So, the first result is -2.


Step 2: Second Position

Move the kernel one step to the right:
[ [2, 3, 4] ]
Multiply and sum:

The second result is -2.


Step 3: Third Position

Move the kernel again:
[ [3, 4, 5] ]
Multiply and sum:

The third result is -2.


Final Result:

The output of the convolution is:
[ [-2, -2, -2] ]


Why Is This Useful?

Convolution is used in many fields:

  • Moving Averages: To smooth data or detect trends.
  • Image Processing: To apply filters like blurring or edge detection.
  • Machine Learning: In convolutional neural networks for feature extraction.