Systems Lab

Agent skill

gtm-persona

Triggers when a user asks to create, update, delete, or check a buyer or stakeholder persona in a GTM workspace, with phrasings like "create a persona for revenue leaders", "the persona should speak English", "delete the CMO persona", or "check the personas".

activeSelf-containedActs undeclared485 words

Filed under Positioning and messaging.

From eliasstravik/gtm-skills · 7 skill entries · 13 · pushed 2026-09-21

What it does when it runs

Triggers when a user asks to create, update, delete, or check a buyer or stakeholder persona in a GTM workspace, with phrasings like "create a persona for revenue leaders", "the persona should speak English", "delete the CMO persona", or "check the personas". Owns the persona files and their 11 person criteria. Not for the workspace or its members (gtm-workspace), ICPs (gtm-icp), checking a given person against a persona (gtm-qualify-prospects), or workflows that score people on a schedule (gtm-workflow).

Automated analysis of the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
writes files

Ask about gtm-persona

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/eliasstravik/gtm-skills.git /tmp/gtm-skills
git -C /tmp/gtm-skills sparse-checkout set "skills/gtm-persona"
mkdir -p ~/.claude/skills/gtm-persona
cp -R "/tmp/gtm-skills/skills/gtm-persona/." ~/.claude/skills/gtm-persona/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from eliasstravik/gtm-skills/blob/2f986ae36d384bded1df28ba51fee25a672fdf4d/skills/gtm-persona/SKILL.md, which is licensed MIT (repository). 485 words, 10 headings.

GTM Persona

Trigger

Apply this skill when a request creates, changes, removes, or checks a persona in a GTM workspace.

Scope

This skill owns personas/<slug>/PERSONA.md in the workspace found by the contract. A persona records desired or accepted criteria for target people in the 11 fields of person data, never facts about the organization or its members.

Inputs

Criteria from the user or sources the user supplies; the existing personas, for the near-duplicate check; the names of personas copied into workflows/workflows/*.ts, for the copy notice.

Roles

The user approves every change through the host's write permission; the agent proposes, edits, commits, and reports.

Procedure

Talk by the six rules in interaction; reproduce the dialogues.

JobDo
CreateWhen an existing persona overlaps the request, offer Update first. When the titles that define the persona are unstated, ask with options. Copy templates/PERSONA.md to personas/<slug>/PERSONA.md, fill only the criteria the user gave, leave the rest Unknown, and say the rest stays Unknown because criteria are never borrowed from the company record or members. Omit ## Person signals and ## Disqualifiers when empty.
UpdateChange the named criteria, signals, or disqualifiers. When a workflow file names this persona, say that workflow keeps its own copy of the criteria until it is updated.
DeleteWhen no persona has the given name, offer the closest matches as options. Say whether a workflow carries a copy, which keeps running. Remove personas/<slug>/; close with what disappeared and that it stays in the workspace's history.
DoctorFlag a persona with no person-matchable criterion (every field Unknown), a placeholder husk, a missing H1, or a folder name that is not its slug; offer the fixes as options; rewrite what the user accepts.

Every save: one sentence on what will change, pull first when origin/main exists, edit through the host's write path, commit on main with a plain-language message, push when a remote exists, verify the commit (and that it reached origin/main when a remote exists), close with what was created, changed, or deleted.

Outputs

personas/<slug>/PERSONA.md in the template's shape, each change a commit on main.

Exceptions

Requires the gtm-workspace skill installed alongside this one; when ../gtm-workspace/SKILL.md is missing, say: install it the same way this skill was installed, with npx skills add eliasstravik/gtm-skills -s gtm-workspace -y (add -g when this skill lives in the global skills directory), then retry. A criterion the user did not state stays Unknown; nothing is derived from ORG.md or MEMBER.md.

QC

  • The 11 fields appear in order, one line each.
  • The H1 is present and the folder name is its slug; empty optional sections are absent.
  • The closing statement of what changed follows a verified commit.

References

interactions dialogues; templates/PERSONA.md; from gtm-workspace: interaction, contract, person data.

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what gtm-persona does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.