Agent skill

Halo Change Request

by automateyournetwork in automateyournetwork/netclaw

Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory.

Apache-2.0Auto-check passedAgent Workflows

Install Halo Change Request

skills CLI
$ npx skills add automateyournetwork/netclaw --skill halo-change-request -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install automateyournetwork/netclaw halo-change-request --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/automateyournetwork/netclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/workspace/skills/halo-change-request .claude/skills/halo-change-request && rm -rf skills-src

Use ~/.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/

Facts

Skill name
halo-change-request
GitHub stars
676
Token cost
~3.2k tokens
SKILL.md length
1,465 words
Files
1
Skills in repo
120
Repo updated
First seen
Licence
Apache-2.0

At a glance

Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory.

  • Works in 5 steps: Decide the category. Infer from context:… → Recall the tenant's change-type catalog → If the needed category is already in the… → …
  • Raising a Halo change
  • SKILL.md covers MCP Server, Available Tools, Key Concepts and Workflow, plus 3 more sections
  • Calls python3; needs HALO_CLIENT_SECRET

What it does

Halo Change Request is an agent skill from automateyournetwork/netclaw. Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory. Use when raising a Halo change, opening a CR in Halo, submitting a change ticket, or asking NetClaw to file a change in HaloPSA.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. It works with Model Context Protocol and Python. The repository describes itself as: An AI agent that claws through your network. The licence is Apache-2.0.

When your agent uses it

  • Raising a Halo change
  • Opening a CR in Halo
  • Submitting a change ticket
  • Asking NetClaw to file a change in HaloPSA

Example prompts

  • “/halo-change-request”

Requirements

  • Python 3
  • A credential in HALO_CLIENT_SECRET

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Decide the category. Infer from context: a change scoped to a specific
  2. Recall the tenant's change-type catalog
  3. If the needed category is already in the catalog, validate it still resolves
  4. If the category is missing (or was invalidated), discover
  5. On confirmation, merge it into the catalog (add the new category; keep the

What it can do on your machine

Read from SKILL.md and the folder at commit aa90e7d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • HALO_CLIENT_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Halo Change Request loads about 3.2k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 1,465 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~75
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from automateyournetwork/netclaw at commit aa90e7d, republished under its Apache-2.0 licence (© automateyournetwork). 1,465 words, ~3,243 tokens.

Download SKILL.mdSave it as .claude/skills/halo-change-request/SKILL.md (or your agent's skills folder).
name
halo-change-request
description
Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory. Use when raising a Halo change, opening a CR in Halo, submitting a change ticket, or asking NetClaw to file a change in HaloPSA.
license
Apache-2.0
user-invocable
true

Halo Change Request

Open a change request in Halo through a strict discover -> preview -> confirm -> submit flow. Halo is HaloPSA / HaloITSM (the same product and the same REST API — HaloPSA is the MSP edition, HaloITSM the internal-IT edition). A "change request" in Halo is not a fixed object type: it is simply a ticket type ("Request Type") whose numeric id and custom fields are configured per organization — and an org often defines several change types (for example a customer-facing change and an internal change). This skill figures out which change is being raised, discovers the matching type, confirms it with a human, remembers it per category, learns its fields, and gates the single write behind explicit approval.

MCP Server

  • Server: halo-mcp (NetClaw-authored, mcp-servers/halo-mcp/)
  • Command: python3 -u mcp-servers/halo-mcp/halo_mcp_server.py (stdio transport)
  • Auth: OAuth2 client-credentials — HALO_CLIENT_ID / HALO_CLIENT_SECRET against HALO_BASE_URL (token from <base>/auth/token, resource API at <base>/api)
  • Python: 3.10+ · Dependencies: fastmcp, httpx, python-dotenv
  • Read/write posture: read-only except one gated write — halo_create_change_request is the ONLY tool in the entire server that can mutate Halo, and it previews (no write) unless submit=true.

This skill also uses the Memory MCP server (memory-mcp) to cache the confirmed change ticket type per Halo tenant.

Available Tools

ToolParametersWhat It Does
halo_list_ticket_typescan_create_only?, customer?, showcounts?Discover ticket types ("Request Types"). Use can_create_only=true to find the org's CHANGE type
halo_get_ticket_typeticket_typeAuthoritative field schema for a type — required/optional/visible field definitions
halo_list_fieldscustom_only?Master FieldInfo catalog (ids <-> names <-> dropdown option values)
halo_get_fieldfieldOne field definition by numeric id, with its lookup values
halo_list_ticketsticket_type?, customer?, asset_id?, status?, open_only?, search?Find a sample existing change to copy field patterns from
halo_get_ticketticket (numeric id)Read one populated ticket as a concrete example
halo_create_change_requestsummary, details, ticket_type, customer?, site?, user?, asset?, custom_fields?, submit=falseTHE ONLY WRITE. Previews the exact POST body unless submit=true
halo_list_clientssearch?Resolve a Halo Client name to its id (the customer param)
halo_list_sitescustomer?, search?Resolve a site within a client
halo_list_userscustomer?, site_id?, search?Resolve the requesting contact/user
memory_get_factsentity, key?Recall the tenant's change-type catalog (key="change_ticket_types")
memory_record_factentity, key, value, metadata?Merge a confirmed change type ({id, name, category}) into the catalog
memory_record_decisioncontext, decision, rationale, ...Log the human's ticket-type confirmation
memory_invalidatefact_id, reasonRetire a cached ticket type that no longer resolves

Key Concepts

  • Halo == HaloPSA == HaloITSM. Same API; only the packaging differs. Everything here works against either.
  • "Change request" is a ticket type, not a built-in. Its id and its custom fields are per-org. You must discover it (never hard-code it) and confirm it with a human before trusting it.
  • There is often more than one change type. Many orgs split changes — e.g. a customer change vs an internal change, or standard / normal / emergency. Treat the change type as a set: work out which change this is (ask if unclear), keep a per-category catalog in Memory, and confirm the specific type before filing.
  • The Halo "Client" is the customer. Every tool that scopes to a customer org takes it as the customer param (a client name or numeric id), which the server resolves to a client_id. When someone says "the client," they mean this.
  • Tickets are "Faults"; ticket types are "Request Types"; assets are "Devices" in Halo's API vocabulary — the tool names hide this, but error text may show it.
  • One write, always gated. halo_create_change_request with submit=false performs NO HTTP write; it returns the exact array body that would be POSTed to /api/Tickets. The real POST happens only on a second call with submit=true.
  • Memory holds the type, never the contents. Cache only the confirmed ticket-type id and its field metadata — never credentials, never the text of any change ticket.

Workflow

The full change-request flow, step by step. Do not skip steps (a) or (c).

(a) Determine the change category, then recall or discover its type

An organization usually has more than one change type — most commonly a customer change (raised against a client) and an internal change (internal IT / infrastructure), and sometimes standard / normal / emergency splits. So first decide which change this is, then resolve the matching type. Never assume there is only one.

  1. Decide the category. Infer from context: a change scoped to a specific customer/client is a customer change; a change with no client (internal infra, your own systems) is an internal change. If it is at all ambiguous, ASK the operator — e.g. "Is this a customer change or an internal change?" Use a short lowercase label for the category (customer, internal, emergency, ...).

  2. Recall the tenant's change-type catalog:

    memory_get_facts(entity="halo-<tenant>", key="change_ticket_types")

    The value is a list of {"id":..., "name":..., "category":...} — the change types already confirmed for this instance. <tenant> is from HALO_TENANT, or the host of HALO_BASE_URL (e.g. halo-acme for acme.halopsa.com).

  3. If the needed category is already in the catalog, validate it still resolves with halo_get_ticket_type(ticket_type=<id>):

    • resolves cleanly -> use that id, go to (b).
    • no longer resolves (renamed/deleted) -> drop it from the catalog, re-discover (below), and memory_invalidate the stale fact when you rewrite the catalog.
  4. If the category is missing (or was invalidated), discover:

    halo_list_ticket_types(can_create_only=true)

    This commonly returns several change-shaped types (e.g. "Change Request", "Internal Change", "Emergency Change"). Present the candidates and ask the operator which one is the <category> change — do NOT auto-pick when more than one looks like a change, and do NOT collapse them into a single "the change type".

  5. On confirmation, merge it into the catalog (add the new category; keep the others — do not overwrite the whole list with a single entry):

    memory_record_fact(entity="halo-<tenant>", key="change_ticket_types",
                       value=<updated JSON list including {"id":<id>,"name":"<name>","category":"<category>"}>)
    memory_record_decision(context="Halo change type for <tenant> / <category>",
                           decision="Use ticket type <id> (<name>) for <category> changes",
                           rationale="Operator-confirmed from halo_list_ticket_types(can_create_only=true)")

Carry the selected <id> into (b) and (c). If a single request genuinely spans both a customer and an internal change, that is two change tickets — run the flow once per category, confirming each.

Show full SKILL.md (549 more words)Show less
(b) Learn the fields (schema + a real example)
  1. Authoritative schema — which fields are required vs optional, and their dropdown values:

    halo_get_ticket_type(ticket_type=<id>)

    Use halo_list_fields / halo_get_field to resolve any custom FieldInfo ids <-> names <-> option values you need.

  2. A concrete example — read a real, populated change to see how fields are actually filled:

    halo_list_tickets(ticket_type=<id>)      # find a recent one
    halo_get_ticket(ticket=<sample id>)      # inspect its summary/details/customfields
  3. Cache field metadata alongside the type id (metadata={...}) if it helps future runs — but only the metadata, never any ticket's contents.

(c) Assemble, PREVIEW, then STOP for approval
  1. Resolve the customer/site/user as needed (halo_list_clients, halo_list_sites, halo_list_users).
  2. Preview (no write):
    halo_create_change_request(
        summary="...", details="...", ticket_type="<id>",
        customer="<client name or id>", site="...", user=<id>, asset="...",
        custom_fields={<id-or-name>: <value>, ...},
        submit=false)
  3. Present the returned preview body to the operator verbatim. It is the exact /api/Tickets payload.
  4. STOP. Do NOT submit until the operator explicitly approves this specific preview (Constitution XIV, Human-in-the-Loop). A vague "go ahead" earlier does not count — approval is per change, on the previewed body.
  5. Only after explicit approval, re-call the identical arguments with submit=true to perform the one real write.
(d) Record the outcome in GAIT

Log the decision and the created ticket id to the GAIT audit trail (see gait-session-tracking): the confirmed ticket type, the previewed body, the approval, and the resulting Halo ticket id.

Integration with Other Skills

SkillIntegration
gait-session-trackingMandatory. Record the ticket-type decision, the preview, the human approval, and the created ticket id in the GAIT audit trail
memoryCaches the per-category change-type catalog per tenant (entity="halo-<tenant>", key="change_ticket_types"); no credentials or ticket contents
halo-ticket-contextRead the created change and its action history afterward for follow-up
halo-asset-contextReview the affected asset and its open tickets before proposing the change
servicenow-change-workflowSibling gated-change pattern (STOP-until-confirmed) if the org also runs ServiceNow

Environment Variables

VariableRequiredDescription
HALO_BASE_URLYesHalo host, e.g. https://<tenant>.halopsa.com
HALO_CLIENT_IDYesOAuth2 client-credentials application id (Configuration > Integrations > Halo API)
HALO_CLIENT_SECRETYesOAuth2 client secret
HALO_TENANTOptionalTenant identifier (also used to key Memory as halo-<tenant>)
HALO_SCOPEOptionalOAuth2 scope (default all)
HALO_AUTH_URLOptionalOverride the auth-server URL for self-hosted layouts
HALO_VERIFY_SSLOptionaltrue/false TLS verification (default true)
HALO_TIMEOUTOptionalPer-request timeout in seconds (default 30)
HALO_PAGE_SIZE / HALO_MAX_PAGESOptionalPagination tuning (defaults 50 / 20)
HALO_RATE_LIMITOptionalRequests/minute cap (0 = disabled)

Important Rules

  • There is exactly ONE write tool — halo_create_change_request. Every other Halo tool is read-only. Never attempt any other mutation through this server.
  • Never submit without explicit, per-change approval. Always preview first (submit=false), present the exact body, STOP, and only re-call with submit=true after the operator approves that preview (Constitution XIV).
  • Discover the change ticket type(s); never assume it, and never assume there is only one. An org may have customer / internal / emergency change types. Work out which category applies (ask if unclear), confirm the specific candidate with a human, and keep a per-category catalog. When discovery returns several change-shaped types, present them and let the operator choose — do not auto-pick.
  • Store only the ticket-type id + field metadata in Memory — NEVER credentials, secrets, or the contents of any ticket. Memory keys off halo-<tenant>.
  • Re-validate the cache. If the cached type no longer resolves via halo_get_ticket_type, memory_invalidate it and re-discover.
  • Halo == HaloPSA == HaloITSM — the workflow is identical for both editions.
  • GAIT logging is mandatory for the decision and the created ticket id.

© automateyournetwork, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in workspace/skills/halo-change-request of automateyournetwork/netclaw.

Open the folder on GitHubat commit aa90e7d

Compare with similar skills

Halo Change Request 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.

Halo Change Request compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Halo Change Request this skillautomateyournetwork/netclaw676—~3.2kAutomated safety check: PassApache-2.0
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT
MemPalace Setup and OperationMemPalace/mempalace60k—~2.2kAutomated safety check: PassMIT
Google Antigravity SDKgoogle-antigravity/antigravity-sdk-python3.7k—~2.1kAutomated safety check: NotesApache-2.0
FastmcpTommy-yw/RunbookHermes5463 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • Installs and configures MemPalace as a private local palace, a shared-brain hub or a client of an existing hub, including MCP registration and version-correct initialization.

    60k GitHub stars~2.2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Google Antigravity SDK

    google-antigravity/antigravity-sdk-python

    Design, implement, and debug autonomous AI agents and multi-agent systems using the Google Antigravity (AGY) SDK.

    3.7k GitHub stars~2.1k tokensUpdated 3 days ago
    Agent WorkflowsAuto-check: notes
  • Fastmcp

    Tommy-yw/RunbookHermes

    Build, test, inspect, install, and deploy MCP servers with FastMCP in Python.

    546 GitHub starsUsed in 3 repos~2.1k tokens
    Agent WorkflowsAuto-check passed
  • Fastmcp Client CLI

    PrefectHQ/fastmcp

    Query and invoke tools on MCP servers using fastmcp list and fastmcp call.

    28k GitHub stars~823 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from automateyournetwork/netclaw

All 120 skills in this repo
  • EVE-NG Lab Topology Design

    automateyournetwork/netclaw

    Entry point for designing EVE-NG network labs: classifies the request, gathers missing requirements, proposes options and validates the resulting topology.

    677 GitHub stars~612 tokensUpdated today
    Auto-check passed
  • ACI Policy Change Deployment

    automateyournetwork/netclaw

    Deploys Cisco ACI policy changes only behind an approved ServiceNow Change Request, capturing pre and post-change fault baselines and rolling back automatically on a fault delta.

    677 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Cisco ACI Fabric Health Audit

    automateyournetwork/netclaw

    Runs a phased health audit of a Cisco ACI fabric through MCP tools: node status, links, tenant and policy review, faults and endpoint learning.

    677 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Anta Validation

    automateyournetwork/netclaw

    Validate Arista EOS network state against ANTA's pre-built 208-test catalogue, with structured pass/fail verdicts.

    677 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Arista Cvp

    automateyournetwork/netclaw

    Arista CloudVision Portal (CVP) automation via REST API — device inventory, events, connectivity monitoring, tag management (4 tools).

    677 GitHub stars~2.2k tokensUpdated today
    Auto-check: notes
  • AWS Cloud Monitoring

    automateyournetwork/netclaw

    AWS CloudWatch monitoring — metrics, alarms, log queries, VPC flow log analysis, network performance.

    677 GitHub stars~1k tokensUpdated today
    Auto-check passed

Categories

Questions about Halo Change Request

What does Halo Change Request do?

Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory. Halo Change Request is an agent skill from automateyournetwork/netclaw. Open a change request in HaloPSA / HaloITSM through a discover-preview-confirm-submit workflow, with the confirmed change ticket type cached in Memory.

When should I use Halo Change Request?

Halo Change Request fits situations like: raising a Halo change; opening a CR in Halo; submitting a change ticket; asking NetClaw to file a change in HaloPSA.

How do I install Halo Change Request in Claude Code?

Run `npx skills add automateyournetwork/netclaw --skill halo-change-request -a claude-code`. Or copy the skill folder (workspace/skills/halo-change-request in automateyournetwork/netclaw) into .claude/skills/halo-change-request in your project. Claude Code loads it when a task matches its description.

How do I install Halo Change Request in Codex?

Run `npx skills add automateyournetwork/netclaw --skill halo-change-request -a codex`. Or copy the skill folder (workspace/skills/halo-change-request in automateyournetwork/netclaw) into .agents/skills/halo-change-request in your project. Codex loads it when a task matches its description.

Can I use Halo Change Request in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add automateyournetwork/netclaw --skill halo-change-request -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/halo-change-request, .gemini/skills/halo-change-request, .github/skills/halo-change-request and .opencode/skills/halo-change-request in your project.

What does Halo Change Request need to run?

Going by SKILL.md and its folder, Halo Change Request needs the command-line tools its instructions call (python3) and credentials named HALO_CLIENT_SECRET. Our summary lists: Python 3; A credential in HALO_CLIENT_SECRET.

Does Halo Change Request access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Halo Change Request safe to install?

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.

What licence does Halo Change Request use?

Halo Change Request is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Halo Change Request use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Halo Change Request?

Skills that share tags, products or a category with Halo Change Request: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MemPalace Setup and Operation (MemPalace/mempalace, 60k stars) and Google Antigravity SDK (google-antigravity/antigravity-sdk-python, 3.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Halo Change Request?

automateyournetwork (a GitHub user) maintains it in automateyournetwork/netclaw, which has 676 GitHub stars. The repository holds 120 skills in this directory. The repository was last updated on October 9, 2026.

Source: automateyournetwork/netclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.