Skip to content

How it works

The agent does not load the whole pack. It matches your request, opens one playbook, and loads the principles that apply.

  1. PromptYou name the place and the job.
  2. MatchThe skill description is the trigger.
  3. One filejay-mode picks a row when several skills fit.
  4. StopA person approves. The pipeline applies.

A skill is a folder

skills/<name>/SKILL.md has two fields the agent uses.

  • name is the folder name.
  • description is the trigger. It says when to load the file, and the outcome.

AGENTS.md is the index. Each line names the skill and when to open that file.

Loaded means the agent reads that SKILL.md before it edits. A summary from memory is not loaded.

Two kinds of skill

PrincipleA principle-* file is a short rule used across areas. Every request also loads principle-stop-at-approval.
PlaybookEvery other file is one job: Use when, Steps, Safety checks, Rollback, and Done when.

jay-mode is the router. Take the first matching row. That row names the one skill to load.

What the agent may finish

The agent prepares the diff, the saved plan, or the ticket. It does not apply, merge, or grant itself access.

Where each tool reads

Tool What it reads
Cursor The plugin manifest .cursor-plugin/plugin.json
GitHub Copilot gh skill install, or a copy made by scripts/sync
Claude Code, Codex, and others AGENTS.md plus .agents/skills or .claude/skills

Names

terraform- azure- aws- pipelines- github- azuredevops- servicenow- k8s- gitops- policy- ops- principle-

jay-mode and setup-jstack have no prefix.

The same path, drawn

%%{init: {"theme": "neutral"}}%%
flowchart LR
  prompt[Prompt] --> match[Description match]
  match --> mode[jay-mode when several skills fit]
  mode --> skill[One SKILL.md]
  skill --> stop[Stop for a person]