OpenServ Agent SDK
internet-court/internet-court-skill
Guides building and deploying TypeScript agents on the OpenServ platform, with runnable and runless capabilities, wallet-based sign-up and a local tunnel for development.
Agent SDK task integration patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skill-agent-task-patterns .claude/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .claude/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/skill-agent-task-patterns .agents/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .agents/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/skill-agent-task-patterns .cursor/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .cursor/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/javiarmesto/ALDC-AL-Development-Collection.git --path skills/skill-agent-task-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/skill-agent-task-patterns .gemini/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .gemini/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/skill-agent-task-patterns .github/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .github/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-agent-task-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/skill-agent-task-patterns .opencode/skills/skill-agent-task-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "skill-agent-task-patterns" agent skill from https://github.com/javiarmesto/ALDC-AL-Development-Collection/tree/main/skills/skill-agent-task-patterns into .opencode/skills/skill-agent-task-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-agent-task-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skill-agent-task-patternsAgent SDK task integration patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
Skill Agent Task Patterns is an agent skill from javiarmesto/ALDC-AL-Development-Collection. Agent SDK task integration patterns for Business Central. Triggers on: Agent Task Builder, Agent Task Message Builder, Public API, AssignTask, ExternalId, agent session detection, BindSubscription, TryFunction agent task, multi-turn agent conversation, agent attachment, task lifecycle management, OnPrem-only methods, AddToTask, SetRequiresReview, SetSkipMessageSanitization, runtime availability.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `examples/lead-handoff-with-attachment.md` and `examples/session-events-binding.md`).
It sits in Backend & APIs, covering Third-party API integration and Building AI agents. The repository describes itself as: AL development toolkit for Business Central with specialist agents, skills and review workflows for Copilot, Claude Code and Codex. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4f99d7d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are al).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
learn.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Skill Agent Task Patterns loads about 4.2k tokens when it runs. Until then it costs about 106 tokens; SKILL.md has 778 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from javiarmesto/ALDC-AL-Development-Collection at commit 4f99d7d, republished under its MIT licence (© javiarmesto). 778 words, ~4,244 tokens.
.claude/skills/skill-agent-task-patterns/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Knowledge base for every Agent SDK task integration pattern, with runtime-availability matrix and Extension-safe workarounds. For SDK architecture and the 3 interfaces, see skill-agent-toolkit.
References:
Critical: not every documented method works in Extension scope today. Verify here before designing.
| Method | Scope | Status | Workaround |
|---|---|---|---|
AddTaskMessage(From, Text) | Extension | ✅ Available | — |
AddAttachment(Name, MediaType, InStream) | Extension | ✅ Available | — |
SetExternalId(Text) | Extension | ✅ Available | — |
SetRequiresReview(true) | OnPrem only | ❌ Ext. blocked | Use IAgentTaskExecution Warning annotation |
SetSkipMessageSanitization(true) | OnPrem only | ❌ Ext. blocked | Pre-format message text upstream |
AddToTask(AgentTask) | Future | ❌ Not in 17.0 | Create a new follow-up task referencing original ExternalId |
Custom Agent.GetCustomAgents() | Future | ❌ Not in 17.0 | Use Agent Setup.OpenAgentLookup() |
OnPrem-only methods are documented but throw at runtime when invoked from a cloud Extension. Treat the workarounds as the canonical Extension pattern.
| Codeunit | Purpose | Key methods |
|---|---|---|
Agent Task Builder | Create new tasks (fluent API) | .Initialize(Guid, Text).SetExternalId(Text).AddTaskMessage(Text, Text).Create() |
Agent Task Message Builder | Build messages with options | .Initialize(From, Text), .AddAttachment(Name, MediaType, InStream), .AddToTask(Record) |
Agent Task | Query/manage existing tasks | GetTaskByExternalId(Guid, Text), CanSetStatusToReady(Record), SetStatusToReady(Record) |
Agent Message | Read/update message text | GetText(Record), UpdateText(Record, Text) |
Agent Setup | Agent lookup + setup management | OpenAgentLookup(Enum, var Guid), GetSetupRecord(...), SaveChanges(...) |
Agent | Core agent operations | SetInstructions(Guid, SecretText), Deactivate(Guid), IsActive(Guid), GetDisplayName(Guid), PopulateDefaultProfile(...) |
Agent Session | Detect agent runtime context | IsAgentSession(var Enum), IsAgentSession(Enum), GetCurrentSessionAgentTaskId() |
When: every reusable task-creation surface. All other patterns call through here.
Architecture: Public codeunit (Access = Public) + Internal implementation codeunit.
Contract:
// Overload 1: basic task
procedure AssignTask(AgentUserSecurityID: Guid; TaskTitle: Text[150]; From: Text[250]; Message: Text): Record "Agent Task"
// Overload 2: with ExternalId for tracking / multi-turn
procedure AssignTask(AgentUserSecurityID: Guid; TaskTitle: Text[150]; ExternalId: Text[2048]; From: Text[250]; Message: Text): Record "Agent Task"
// Overload 3: with attachments
procedure AssignTaskWithAttachment(AgentUserSecurityID: Guid; TaskTitle: Text[150]; From: Text[250]; Message: Text; var TempAttachments: Record "Agent Task File"): Record "Agent Task"
// Lifecycle
procedure Deactivate(AgentUserSecurityID: Guid)
procedure IsActive(AgentUserSecurityID: Guid): BooleanImplementation (Impl codeunit, Access = Internal):
local procedure AssignTaskInternal(
AgentUserSecurityID: Guid;
TaskTitle: Text[150];
ExternalId: Text[2048];
From: Text[250];
Message: Text;
var TempAttachments: Record "Agent Task File" temporary): Record "Agent Task"
var
AgentTaskBuilder: Codeunit "Agent Task Builder";
AgentTaskMsgBuilder: Codeunit "Agent Task Message Builder";
ContentStream: InStream;
begin
AgentTaskMsgBuilder.Initialize(From, Message);
if TempAttachments.FindSet() then
repeat
TempAttachments.Content.CreateInStream(ContentStream);
AgentTaskMsgBuilder.AddAttachment(
TempAttachments."File Name",
TempAttachments."Content Type",
ContentStream);
until TempAttachments.Next() = 0;
AgentTaskBuilder := AgentTaskBuilder
.Initialize(AgentUserSecurityID, TaskTitle)
.AddTaskMessage(AgentTaskMsgBuilder);
if ExternalId <> '' then
AgentTaskBuilder.SetExternalId(ExternalId);
exit(AgentTaskBuilder.Create());
end;When: a button on a page sends work to an agent.
Flow: AgentSetup.OpenAgentLookup() → user picks agent → PublicAPI.AssignTask().
trigger OnAction()
var
AgentSetup: Codeunit "Agent Setup";
MyAgentAPI: Codeunit "My Agent Public API";
AgentUserSecurityId: Guid;
begin
if not AgentSetup.OpenAgentLookup(
Enum::"Agent Metadata Provider"::"My Agent", AgentUserSecurityId) then
exit;
MyAgentAPI.AssignTask(
AgentUserSecurityId,
CopyStr(StrSubstNo('Process: %1', Rec.Name), 1, 150),
'LEAD-' + Rec."No.",
CopyStr(UserId(), 1, 250),
StrSubstNo('Please process customer %1 (No. %2).', Rec.Name, Rec."No."));
end;When: a business event (posting, releasing, approval) auto-triggers an agent task.
Non-negotiable rules:
[TryFunction] — never block the business event on agent failure.Session.LogMessage with category and GetLastErrorText().[EventSubscriber(ObjectType::Codeunit, Codeunit::"Release Sales Document",
OnBeforeReleaseSalesDoc, '', false, false)]
local procedure OnBeforeRelease(var SalesHeader: Record "Sales Header")
begin
if SalesHeader."Document Type" <> SalesHeader."Document Type"::Order then exit;
if not MeetsCondition(SalesHeader) then exit;
if not TryCreateTask(SalesHeader) then
Session.LogMessage('BCA2A-FAIL',
StrSubstNo('Task creation failed for %1: %2', SalesHeader."No.", GetLastErrorText()),
Verbosity::Error, DataClassification::SystemMetadata,
TelemetryScope::ExtensionPublisher, 'Category', 'BCA2A');
end;
[TryFunction]
local procedure TryCreateTask(var SalesHeader: Record "Sales Header")
var
PublicAPI: Codeunit "My Agent Public API";
begin
PublicAPI.AssignTask(
GetAgentSecurityId(),
'Validate SO ' + SalesHeader."No.",
'SO-' + SalesHeader."No.",
'System',
BuildMessage(SalesHeader));
end;When: agent needs to process files (PDFs, images, CSVs, Excel).
Signature: AddAttachment(Name: Text[250]; MediaType: Text; ContentStream: InStream)
procedure CreateTaskWithAttachment(AgentUserId: Guid; var DocumentBlob: Codeunit "Temp Blob")
var
AgentTaskBuilder: Codeunit "Agent Task Builder";
AgentTaskMsgBuilder: Codeunit "Agent Task Message Builder";
ContentStream: InStream;
begin
DocumentBlob.CreateInStream(ContentStream);
AgentTaskMsgBuilder.Initialize(CopyStr(UserId(), 1, 250), 'Review attached document.');
AgentTaskMsgBuilder.AddAttachment('Document.pdf', 'application/pdf', ContentStream);
AgentTaskBuilder := AgentTaskBuilder
.Initialize(AgentUserId, 'Process Document')
.SetExternalId('DOC-1001')
.AddTaskMessage(AgentTaskMsgBuilder);
AgentTaskBuilder.Create();
end;Common MIME types: application/pdf, image/png, image/jpeg, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (Excel xlsx), text/csv.
When you need a canonical end-to-end example combining attachment + business condition + telemetry + lead handoff, load examples/lead-handoff-with-attachment.md.
When: continue an existing task with follow-up messages.
Flow: GetTaskByExternalId() → build follow-up → workaround needed (see below) → SetStatusToReady().
Status (Runtime 17.0): AgentTaskMessageBuilder.AddToTask() is not available in Extension scope yet. Until it ships, create a new task that references the original ExternalId:
procedure SendFollowUpTask(AgentUserId: Guid; OriginalExternalId: Text; AdditionalInfo: Text)
var
AgentTaskBuilder: Codeunit "Agent Task Builder";
AgentTaskMsgBuilder: Codeunit "Agent Task Message Builder";
begin
AgentTaskMsgBuilder.Initialize(CopyStr(UserId(), 1, 250), AdditionalInfo);
AgentTaskBuilder := AgentTaskBuilder
.Initialize(AgentUserId, CopyStr('Update for ' + OriginalExternalId, 1, 150))
.SetExternalId(OriginalExternalId + '-UPD')
.AddTaskMessage(AgentTaskMsgBuilder);
AgentTaskBuilder.Create();
end;When AddToTask becomes available in a future runtime, the canonical pattern will be:
// FUTURE — not yet in Extension scope
AgentTaskRecord := AgentTaskCU.GetTaskByExternalId(AgentSecurityId, ExternalId);
AgentTaskMsgBuilder.Initialize('User', FollowUpText);
AgentTaskMsgBuilder.AddToTask(AgentTaskRecord);
if AgentTaskCU.CanSetStatusToReady(AgentTaskRecord) then
AgentTaskCU.SetStatusToReady(AgentTaskRecord);When: monitor, restart, or stop tasks programmatically.
| Operation | Method |
|---|---|
| Check active | Agent.IsActive(AgentUserSecurityId) |
| Deactivate | Agent.Deactivate(AgentUserSecurityId) |
| Find by ExternalId | AgentTask.GetTaskByExternalId(AgentUserId, ExternalId) |
| Resume paused task | if AgentTask.CanSetStatusToReady(Rec) then AgentTask.SetStatusToReady(Rec) |
| Display name lookup | Agent.GetDisplayName(AgentUserSecurityId) |
When: AL code must run only inside an agent session (not in normal user sessions).
// Any agent
var
AgentSession: Codeunit "Agent Session";
Provider: Enum "Agent Metadata Provider";
begin
if not AgentSession.IsAgentSession(Provider) then exit;
// agent-specific logic
end;
// Specific agent
if not AgentSession.IsAgentSession(Enum::"Agent Metadata Provider"::"Lead Qualifier") then exit;When: event subscribers should be active only during agent tasks, never in normal user sessions.
Architecture: SingleInstance codeunit + BindSubscription on System Initialization.OnAfterInitialization.
codeunit 52120 "My Agent Session Events"
{
Access = Internal;
SingleInstance = true;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"System Initialization",
OnAfterInitialization, '', false, false)]
local procedure OnInit()
var
AgentSession: Codeunit "Agent Session";
begin
if not AgentSession.IsAgentSession(
Enum::"Agent Metadata Provider"::"My Agent") then exit;
GlobalEvents.SetAgentTaskID(AgentSession.GetCurrentSessionAgentTaskId());
if BindSubscription(GlobalEvents) then;
end;
var
GlobalEvents: Codeunit "My Agent Events";
}SetRequiresReviewSetRequiresReview is OnPrem-only. To force human review from an Extension, add a Warning annotation in IAgentTaskExecution.AnalyzeAgentTaskMessage:
procedure AnalyzeAgentTaskMessage(
AgentTaskMessage: Record "Agent Task Message";
var Annotations: Record "Agent Annotation")
var
AgentMessage: Codeunit "Agent Message";
MessageText: Text;
begin
MessageText := AgentMessage.GetText(AgentTaskMessage);
if MessageText.Contains('DISQUALIFICATION') then begin
Annotations.Severity := Annotations.Severity::Warning;
Annotations.Message :=
'Disqualification requires human approval. Review before proceeding.';
Annotations.Insert();
end;
end;Warning annotations trigger the user-intervention flow via GetAgentTaskUserInterventionSuggestions. Error annotations stop the task.
Until Custom Agent.GetCustomAgents() becomes available in Extension scope, use Agent Setup.OpenAgentLookup() for user selection and Agent.GetDisplayName(Guid) for display:
trigger OnLookup(var Text: Text): Boolean
var
AgentSetup: Codeunit "Agent Setup";
SelectedAgentUserId: Guid;
begin
if AgentSetup.OpenAgentLookup(
Enum::"Agent Metadata Provider"::"Quote Builder", SelectedAgentUserId) then begin
Rec."Target Agent Security ID" := SelectedAgentUserId;
Text := Format(SelectedAgentUserId);
exit(true);
end;
exit(false);
end;
local procedure GetAgentDisplayText(AgentSecurityId: Guid): Text
var
AgentCU: Codeunit Agent;
begin
if IsNullGuid(AgentSecurityId) then exit('');
exit(AgentCU.GetDisplayName(AgentSecurityId) + ' (' + Format(AgentSecurityId) + ')');
end;| Situation | Pattern(s) |
|---|---|
| Standard reusable task creation | A (Public API) |
| User clicks button to assign work | B → A |
| Business event triggers agent | C → A |
| Agent processes uploaded files | D + (A, B, or C) |
| Follow-up on existing task | E |
| Monitor / restart / stop tasks | F |
| Code runs only in agent context | G |
| Performance: subscribers only during tasks | H |
| Need to force human review (Extension) | Warning annotation in AnalyzeAgentTaskMessage |
Session.LogMessage with category and error text.{PREFIX}-{No.} — SO-1001, LEAD-001, EMAIL-{threadId}. Never GUIDs or auto-increments.Agent Task Message Builder for attachments — never manipulate the underlying records directly.Load an example only when you need its concrete template:
examples/lead-handoff-with-attachment.md.examples/session-events-binding.md.© javiarmesto, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/skill-agent-task-patterns of javiarmesto/ALDC-AL-Development-Collection.
Open the folder on GitHubat commit 4f99d7d
Skill Agent Task Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Skill Agent Task Patterns this skilljaviarmesto/ALDC-AL-Development-Collection | 109 | — | ~4.2k | Automated safety check: Pass | MIT | |
| OpenServ Agent SDKinternet-court/internet-court-skill | 6.4k | 2 repos | ~4.9k | Automated safety check: Notes | MIT | |
| Fishjam Python Server SDKsoftware-mansion-labs/skills | 291 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Routerbase API Integrationaiskillstore/marketplace | 430 | — | ~964 | Automated safety check: Pass | None | |
| Dify Command Line with difyctllanggenius/dify | 158k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Sub2API AdminWei-Shaw/sub2api | 43k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 |
internet-court/internet-court-skill
Guides building and deploying TypeScript agents on the OpenServ platform, with runnable and runless capabilities, wallet-based sign-up and a local tunnel for development.
software-mansion-labs/skills
Python server SDK for Fishjam — backends that create rooms, mint peer tokens, receive server notifications, and run voice agents.
aiskillstore/marketplace
Integrate applications with RouterBase, the OpenAI-compatible model gateway at https://routerbase.com/v1.
langgenius/dify
Base skill for the difyctl CLI: discover a Dify server's operations through help output and run them as commands, always with JSON output.
Wei-Shaw/sub2api
Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.
medusajs/medusa-agent-skills
Walks through adding an AI agent for store operators to a Medusa project: data models, module service, agent runtime, streaming API route and admin chat UI.
javiarmesto/ALDC-AL-Development-Collection
Generate, review, and optimize natural language instructions for Business Central agents (Designer or SDK).
javiarmesto/ALDC-AL-Development-Collection
AL API development patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
javiarmesto/ALDC-AL-Development-Collection
AL Copilot capability development for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
javiarmesto/ALDC-AL-Development-Collection
AL version migration for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
javiarmesto/ALDC-AL-Development-Collection
Build, configure, and integrate Business Central agents using the AI Development Toolkit and Agent SDK.
javiarmesto/ALDC-AL-Development-Collection
AL debugging and diagnostics for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.
Categories
Agent SDK task integration patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection. Skill Agent Task Patterns is an agent skill from javiarmesto/ALDC-AL-Development-Collection. Agent SDK task integration patterns for Business Central.
Skill Agent Task Patterns fits situations like: : Agent Task Builder; agent Task Message Builder; agent session detection; bindSubscription.
Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a claude-code`. Or copy the skill folder (skills/skill-agent-task-patterns in javiarmesto/ALDC-AL-Development-Collection) into .claude/skills/skill-agent-task-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a codex`. Or copy the skill folder (skills/skill-agent-task-patterns in javiarmesto/ALDC-AL-Development-Collection) into .agents/skills/skill-agent-task-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-agent-task-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-agent-task-patterns, .gemini/skills/skill-agent-task-patterns, .github/skills/skill-agent-task-patterns and .opencode/skills/skill-agent-task-patterns in your project.
SKILL.md names no scripts, command-line tools or credentials: Skill Agent Task Patterns is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: learn.microsoft.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Skill Agent Task Patterns is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Skill Agent Task Patterns: OpenServ Agent SDK (internet-court/internet-court-skill, 6.4k stars), Fishjam Python Server SDK (software-mansion-labs/skills, 291 stars), Routerbase API Integration (aiskillstore/marketplace, 430 stars) and Dify Command Line with difyctl (langgenius/dify, 158k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
javiarmesto (a GitHub user) maintains it in javiarmesto/ALDC-AL-Development-Collection, which has 109 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: javiarmesto/ALDC-AL-Development-Collection on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.