Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Code Block
languageyaml
titleSkill Frontmatter (copy this block to the top of your .md file)
---
title: "Skill Template  Replace This Title

...

"
tags: [replace, with, relevant, keywords]

...


description: "One-line summary explaining what this skill teaches Claude to do

...

"
version: "1.0"

...


author: "Tatsoft

...

"
---


Excerpt

Canonical template for creating FrameworX AI Skills — markdown playbooks that teach the AI assistant how to build specific solutions. Duplicate this page to create your own skill.


Note

Publishing checklist: When publishing a skill page to Confluence, you must add the skill label to the page. Without this label, search_docs(query, labels='skill') will not discover your skill. Add additional labels for relevant modules (e.g. alarm, script, ml).

To create a new skill: Click ...Copy on this page, then replace all placeholder content with your implementation.

...

Section


Column
width50%

What This Skill Does

...

Brief one-paragraph summary of what this skill accomplishes. Focus on the outcome, not the process. Write this for Claude — it reads this after deciding to load the skill, so get straight to the point.

Example: "This skill creates a complete alarm pipeline: groups for severity classification, alarm items with limit-based triggers on existing tags, and verification via AlarmsMonitor."


Column
width50%

On this page:

Table of Contents
maxLevel2
minLevel2
indent10px

...

stylenone


When to Use This Skill

Describe the trigger conditions. Be specific — Claude uses this to decide whether to load the skill.

Use this skill when:


  • Wiki Markup
    The user asks to \[specific scenario\]



  • Wiki Markup
    The user mentions \[specific keywords or concepts\]



  • Wiki Markup
    The solution needs \[specific capability\]


Do NOT use this skill when:


  • Wiki Markup
    \[Scenario where a different approach is better\]



  • Wiki Markup
    \[Common misapplication to avoid\]


Prerequisites

What must exist in the solution before this skill can be applied

...

.

  • Solution must be open (open_solution or create_solution completed)

  • Wiki Markup
    \[Specific tags, channels, or objects that must exist\]



  • Wiki Markup
    \[Required ScriptsReferences or NuGet packages\]


MCP Tools and Tables Involved

Quick reference for Claude on which tools and table types this skill uses.

Category

Items

Tools

...

get_table_schema, write_objects, list_protocols, get_objects, list_elements

Tables

...

UnsTags, DevicesChannels, DevicesNodes, DevicesPoints

Implementation Steps

Wiki Markup
Step 1: \[Action Name\]

Explain what to do and why. Include the exact MCP tool call.

First, fetch the schema to confirm field names:

Code Block
languagetext
get_table_schema('TableType')

Then write the objects:

Code Block
languagejson
titlewrite_objects call
{
  "table_type": "TableType",
  "data": [
    {
      "Name": "ObjectName",
      "Property1": "Value1",
      "Property2": "Value2"
    }
  ]
}

Key decisions:

  • Why this value for Property1
  • What to change for different scenarios
Wiki Markup
Step 2: \[Action Name\]

Continue the pattern. Each step should be self-contained enough that Claude can execute it and verify before moving on.

Code Block
languagejson
titlewrite_objects call
{
  "table_type": "AnotherTable",
  "data": [
    {
      "Name": "ObjectName",
      "DependsOn": "ObjectFromStep1"
    }
  ]
}


Wiki Markup
Step 3: \[Action Name\]

Final configuration step.

Code Examples

Include C# script examples when the skill involves ScriptsClasses or ScriptsTasks.

...

Code Block
languagecsharp
titleScriptsClasses — ClassContent for [purpose]

...

public static void MethodName(string tagPath)
{
    double value = @Tag.TagPath.Value;
    // Process logic here
    @Tag.OutputTag.Value = result;
}

Expression to trigger this class:

...

ObjectName

...

Expression

...

Execution

TriggerName

Script.Class.ClassName.MethodName(Tag.InputTag)

...

OnChange

...

Verification

How to confirm the implementation is correct. List concrete checks.

  1. get_objects('TableType') — verify the new objects appear
  2. get_designer_state() — confirm no compilation errors (for scripts)

  3. Wiki Markup
    Start runtime

...

  1.  ? check that \[expected behavior occurs\]


  2. browse_namespace('Tag.Path') — verify tags have expected values

Common Pitfalls

Mistake

Why It Happens

How to Avoid

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c639e625-834c-4403-8107-d49ae15a532a"><ac:plain-text-body><![CDATA[

[Mistake 1]

[Root cause]

[Correct approach]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:

...

schema-version="1" ac:macro-id="146abb4a-092f-4977-8751-18f41c898a9b"><ac:plain-text-body><![CDATA[

[Mistake 2]

[Root cause]

[Correct approach]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3706199e-d1e6-405e-a08f-c5e6978f5077"><ac:plain-text-body><![CDATA[

[Mistake 3]

[Root cause]

[Correct approach]

]]></ac:plain-text-body></ac:structured-macro>

...

Variations

Optional section for common variations of this skill.

Wiki Markup
*Variation A: \[Name\]*

  • Wiki Markup
    Change Step 2 to use \[alternative approach\]



  • Wiki Markup
    Useful when \[scenario\]


Wiki Markup
*Variation B: \[Name\]*

  • Wiki Markup
    Skip Step 3 and instead \[alternative approach\]



  • Wiki Markup
    Useful when \[scenario\]


Related Skills


  • Wiki Markup
    {{skill-related-name}}  \[How it connects\]



  • Wiki Markup
    {{skill-another-name}}  \[How it connects\]


...

In this section...

Page Tree
root@parent

...

...