Skip to content

[dotnet-port-api] Align skill prompt placeholders with .NET #373

Description

@github-actions

Summary

Ported the .NET skills prompt placeholder change from upstream so custom Go skill instruction prompts only require {skills}. The default prompt now embeds the resource/script guidance directly, and custom prompts no longer substitute {resource_instructions} or {script_instructions}.

Ported .NET PRs

Upstream commit: microsoft/agent-framework@d0be98d.

Breaking Changes

Yes. Previously custom SkillsInstructionPrompt templates had to include {skills}, {resource_instructions}, and {script_instructions}, and all three placeholders were substituted. Now only {skills} is required and substituted; {resource_instructions} and {script_instructions} remain literal in custom prompts. This matches the upstream .NET experimental API change and is acceptable while the Go SDK is in beta.

Tests and Examples

  • go test ./agent/skills
  • Updated skills provider tests to cover optional omission of resource/script placeholders and literal rendering when those tokens appear in custom prompts.

Notes

Skipped broader upstream candidates such as tool approval defaults, detailed skill script errors, explicit available resource/script generation, archive-type MCP skills, and declarative workflow JSON/AOT because they are larger or touch different semantics. An existing untracked .github/agents/port-candidate-selector.agent.md file was left untouched and not included in this PR.

Generated by .NET to Go API Porting Agent · 1K AIC · ⌖ 59.9 AIC · ⊞ 21.6K ·


Note

This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch dotnet-port-skill-prompt-placeholders-44535914bdd82bcb.

Click here to create the pull request

To fix the permissions issue, go to SettingsActionsGeneral and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ

Show patch preview (146 of 146 lines)
From 7bd444dae0e267a6243177d4ff470537983d9b25 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Fri, 26 Jun 2026 06:45:56 +0000
Subject: [PATCH] Align skill prompt placeholder handling with .NET

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 agent/skills/provider.go      | 23 +++++++----------------
 agent/skills/provider_test.go | 21 ++-------------------
 agent/skills/skills_test.go   | 17 ++++++++++++++++-
 3 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/agent/skills/provider.go b/agent/skills/provider.go
index 2ba0d4f21..e15739d29 100644
--- a/agent/skills/provider.go
+++ b/agent/skills/provider.go
@@ -20,9 +20,7 @@ import (
 )
 
 const (
-	skillsPlaceholder               = "{skills}"
-	resourceInstructionsPlaceholder = "{resource_instructions}"
-	scriptInstructionsPlaceholder   = "{script_instructions}"
+	skillsPlaceholder = "{skills}"
 )
 
 const defaultSkillsInstructionPrompt = `You have access to skills containing domain-specific knowledge and capabilities.
@@ -35,8 +33,9 @@ Each skill provides specialized instructions, reference documents, and assets fo
 When a task aligns with a skill's domain, follow these steps in exact order:
 - Use ` + "`load_skill`" + ` to retrieve the skill's instructions.
 - Follow the provided guidance.
-{resource_instructions}
-{script_instructions}
+- Use ` + "`read_skill_resource`" + ` to read any referenced resources, using the name exactly as listed
+   (e.g. ` + "`\"style-guide\"`" + ` not ` + "`\"style-guide.md\"`" + `, ` + "`\"references/FAQ.md\"`" + ` not ` + "`\"FAQ.md\"`" + `).
+- Use ` + "`run_skill_script`" + ` to run referenced scripts, using the name exactly as listed.
 Only load what is needed, when it is needed.`
 
 // ContextProviderOptions configures a skills-backed agent.ContextProvider.
@@ -58,8 +57,7 @@ type ContextProviderOptions struct {
 	// SkillsInstructionPrompt is a custom system prompt template.
 	// Wh
... (truncated)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions