What skills are

When an investigation actor starts on a finding, it receives context: the finding itself, relevant events, tool results. Skills add a fourth piece — curated domain knowledge telling the actor what to look for and how to interpret what it finds.

A skill for privilege escalation analysis, for example, explains the difference between a grant event and an escalation, describes elevated window analysis, and gives the actor concrete patterns to flag. The actor brings reasoning; the skill brings expertise.

Skills are loaded by name. An actor's manifest.yaml declares which skills to load, and the skill content is injected into the actor's system context before the investigation begins.

SKILL.md format

A skill is a directory containing a SKILL.md file. The file starts with YAML frontmatter, followed by the skill body in markdown.

---
name: my-skill
description: "One-line summary of what this skill covers"
version: "1.0"
author: you@example.com
parent: privilege-analysis    # optional: inherit from parent
tools: none                   # optional: tool hints
---

## Investigation Context

Write the knowledge the actor needs here. Explain:
- What patterns indicate a real finding vs. noise
- What data points to collect first
- Common false positive patterns and how to rule them out
- Thresholds and baseline interpretation guidance

Frontmatter fields

FieldRequiredDescription
nameYesUnique identifier. Used in actor manifests and mallcop skill commands. Lowercase, hyphens allowed.
descriptionYesOne-line summary shown in mallcop trust list and skill listings.
versionNoSemantic version string. Stored in skills.lock.
authorNoAuthor identity (usually an email). Must match the signing key identity for trust verification.
parentNoName of a parent skill. The parent's body is loaded before this skill's body.
toolsNoTool hints for the actor runtime. Currently informational.

Built-in skills

Three skills ship with mallcop. They load automatically when relevant actor types are invoked. Built-in skills are signed with the mallcop root key and require no trust setup.

privilege-analysis

General privilege escalation reasoning — role grants, permission changes, elevation patterns. Covers the grant/use/escalation distinction, elevated window analysis, service account vs. human patterns, and approval chain interpretation.

Loaded by: triage, investigate actors when the finding type is priv-escalation.

aws-iam

AWS IAM investigation — trust policies, AssumeRole chain tracing, service-linked roles, SCPs. Explains how to read trust policy principal fields, how to follow AssumeRole chains through CloudTrail, and how SCPs interact with role-level permissions.

Parent: privilege-analysis (general escalation context loaded first).

Loaded by: investigate actors on AWS findings involving IAM events.

openclaw-security

OpenClaw/Cline agent security — malicious skill detection, MCP abuse patterns, ClawHavoc campaign indicators of compromise. Includes specific IOC patterns from the ClawHavoc corpus: delayed trigger conditions, namespace conflicts, author identity spoofing, and version creep.

Loaded by: investigate actors when the finding type is malicious-skill.

Skill hierarchy

Skills can declare a parent via the parent frontmatter field. When a skill with a parent is loaded, the parent's body is injected first, followed by the child's body. This allows specialist skills to inherit general domain context without duplicating it.

Example: aws-iam declares parent: privilege-analysis. An actor investigating an AWS IAM escalation gets the general privilege escalation framework first, then the AWS-specific trust policy and AssumeRole chain guidance on top of it.

Chains can be deeper than one level. The runtime loads the full ancestor chain, outermost ancestor first.

Custom skills

Drop custom skills into ~/.mallcop/skills/ or into a skills/ directory in your deployment repo.

Directory structure

skills/
  my-skill/
    SKILL.md         # required: frontmatter + body
    SKILL.md.sig     # generated by: mallcop skill sign

Writing effective skill content

Skill bodies are injected verbatim into actor context. Write for the model: clear structure, concrete patterns, specific thresholds. Avoid prose that the actor would have to interpret — be explicit about what to look for and what it means.

Good skill bodies typically include:

  • What patterns confirm this finding is real vs. noise
  • What data to collect first (ordered by signal value)
  • Known false positive patterns and how to rule them out
  • Severity calibration: what makes this low / medium / high
  • Platform-specific API or log field names the actor will encounter

Keep bodies focused. A skill covering six unrelated topics is harder for the actor to apply correctly than six single-topic skills loaded selectively.

Referencing skills from actor manifests

# manifest.yaml (in plugins/actors/my-actor/)
name: my-actor
type: agent
skills:
  - my-skill
  - privilege-analysis    # can mix built-in and custom

CLI reference

mallcop skill sign

Sign a skill directory with an SSH private key. Produces SKILL.md.sig.

mallcop skill sign DIR --key ~/.ssh/id_ed25519

The signature covers all files in the skill directory (excluding SKILL.md.sig itself). Any change to any file — including adding or removing files — invalidates the signature.

mallcop skill verify

Verify a skill directory's signature against a public key.

mallcop skill verify DIR --pubkey ~/.ssh/id_ed25519.pub
mallcop skill verify DIR --pubkey key.pub --identity author@example.com

Exits 0 if the signature is valid. Exits non-zero otherwise. The --identity flag overrides the identity taken from the pubkey comment field.

mallcop skill lock

Regenerate skills.lock from the current installed skills. The lockfile records SHA-256 hashes of every skill's content and is checked at startup in fail-closed mode.

mallcop skill lock
mallcop skill lock --skills-dir ./skills --output ./skills.lock

Run this after adding, updating, or removing skills. Commit skills.lock to your deployment repo. See Trust: skills.lock for how hash pinning works.