Skip to content
Back to skills

Authoring Org Skills

ASecurity

Authors, validates and packages a claude.ai Organization Skill — the intake questions, the trigger and scope exercises, then lint, pack and verify against measured platform constraints. Reach for this when someone wants to publish a Skill to their organization, or when an upload was rejected and the reason is unclear.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsbash

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add mcorbett51090/RavenClaude --skill authoring-org-skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Authoring Org Skills?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Authoring Org Skills
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-authoring-org-skills/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-authoring-org-skills)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: authoring-org-skills
description: Authors, validates and packages a claude.ai Organization Skill — the intake questions, the trigger and scope exercises, then lint, pack and verify against measured platform constraints. Reach for this when someone wants to publish a Skill to their organization, or when an upload was rejected and the reason is unclear.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---

# authoring-org-skills

Gets a non-expert admin from *"I want everyone's drafts grounded in our own data"* to a
bundle that installs. The constraints are enforced by code, not by this document —
`schemas/org-skill-rules.json` is the contract and `scripts/orgskill.py` is the enforcer.

> **This is a Claude *Code* skill, and it does not fully conform to the rules it
> enforces.** Organization Skills are a different artifact with a different packaging
> contract, so `FM11`/`FM12` (frontmatter keys), the archive rules, and the body-length
> guidance do not literally apply here — this file carries `allowed-tools`, which an
> Organization Skill may not. What does transfer, and is honoured: a description that
> names both capability and trigger, third person throughout, and progressive disclosure.
> Saying so beats implying a self-conformance that is not there.

## Two entry points, deliberately not chained

| You want | Start at | Needs |
|---|---|---|
| **Ship a skill** | §1 → §6 | nothing else |
| **Judge a skill you already have** | the rubric lane | Phase 6 |

The seam between them is real. A quarterly admin ships and leaves; the rubric is the
deluxe version and is a **separate invocation**. Do not chain them by default.

---

## 1. Intake — five questions, before any file exists

1. **Who is the audience?** Every member of the org sees this in their system prompt.
2. **What situations should trigger it?** Not the capability — the *moments*. Keep the
   list; §2 needs it, and it is the ground truth for the invocation checks later.
3. **What data does it need**, and does a connector exist? If not, the data has to be
   maintained somewhere the skill can reach.
4. **How much latitude does Claude have?** The degrees-of-freedom call (S6): a
   compliance-shaped task wants a checklist, a judgement-shaped task wants principles and
   a worked example. Getting this backwards is the most common cause of a skill that is
   technically correct and useless.
5. **Who reviews it?** With org sharing on there is no approval step (S10). If the answer
   is "nobody", that is the answer — write it down.

## 2. The trigger-enumeration exercise

Write **six to ten concrete situations**, in the words a colleague would use.

> *"A customer replies asking why they were charged twice."*
> *"A renewal is 30 days out and the account has an open ticket."*

Then compress them into a description that **names both the capability and the trigger**
(S3 — the description is the discovery mechanism, and it is all Claude sees when choosing
among the org's other skills). Keep the list; it is not scaffolding.

⛔ **A description that names only the capability is the single most common defect in the
corpus.** `DS01` measures it, and its fire rate is printed with every finding.

## 3. The scope-negation exercise

Write **what this is NOT for, and what to use instead.** Three lines is enough.

This is the cheapest quality lever available. It costs a sentence, it prevents the skill
firing on adjacent work, and — because selection is relative to the whole field of skills
in the org — it is the only part of scope the author can actually control.

## 4. Layout — what stays in the body

Body: the procedure someone follows. Everything else becomes a bundled file, referenced
by a relative link, with a table of contents if it is long (S6).

Bundled files cost nothing until they are read, so the split is close to free. Two rules
that are not obvious:

- **Avoid deeply nested references** (S6). A file that points at a file that points at a
  file is one nobody reaches.
- **A bundled file must actually be in the archive.** `ZP08` checks the archive, not the
  disk, because a link that resolves in the working tree and not in the bundle fails only
  in production. Start from `templates/skeleton/`.

## 5. lint → fix → pack → verify

```bash
orgskill lint  <skill-dir>              # add --run-record <path> for a quarantine
orgskill pack  <skill-dir> -o <out.zip>
orgskill verify <out.zip>
```

`lint` exits 0 clean, 2 on a finding or a parse ambiguity — never 1, because a
non-blocking exit is the defect class this tool exists to avoid.

**FAIL blocks; WARN informs.** A warn is a heuristic, and every advisory finding prints
the rate it fired at and the population it was measured on, so it can be discounted on
sight rather than obeyed on reflex.

**Refusals `R1`–`R4` have no override.** No flag, no environment variable, no config key.
If one fires, read `reference/refusals.md`: the first remedy is to **paraphrase**, which
resolves most cases in one sentence and needs no reviewer.

`verify` re-opens the archive and re-runs the linter on the **extracted** tree. It shares
no state with `pack` — a packer that checks its own output is checking its own intent.

## 6. Ship it, and read the disclosure

Upload at **Organization settings → Skills**. Provisioning is immediate and org-wide.

⛔ **Whether the skill FIRES is not testable here, and this tool will never tell you it
will.** Selection is relative to the whole field of skills installed in the target org —
which the author does not have and cannot simulate (S18). A clean lint says the archive
is well-formed. It says nothing about whether the skill is ever chosen, whether it is
useful, or whether the platform's scanner will accept it. That scanner's verdict is
unappealable, it re-fires on every edit, and it is why the advice is to **attempt the
upload early rather than on a deadline**.

## Reference

- [`reference/refusals.md`](reference/refusals.md) — what the studio will not emit, and
  the four-condition quarantine path.
- [`reference/platform-constraints.md`](reference/platform-constraints.md) — the evidence
  file. Rules whose tier is derived read it; the zip-root question is still open there,
  and settling it is one upload each.
- [`schemas/org-skill-rules.json`](schemas/org-skill-rules.json) — every rule, its tier,
  its claim, and for advisories its measured fire rate and population.
- [`templates/skeleton/`](templates/skeleton/) — the starting tree.
- [`templates/examples/`](templates/examples/) — two skills authored through this
  procedure, in different domains, both lint-clean and verified.

Related, and not reimplemented here (S13): `refine-to-rubric` for the judged lane,
`prompt-pattern-library` for prompt shapes, and the `prompt-engineer` agent for wording.

Files in this skill

  • SKILL.md6.7 KB
  • reference/ds02-markers.json2.1 KB
  • reference/platform-constraints.md10.1 KB
  • reference/refusals.md10.6 KB
  • schemas/org-skill-rules.json34.1 KB
  • scripts/derive_markers.py6.4 KB
  • scripts/lint_rules.py15 KB
  • scripts/orgskill.py22.9 KB
  • scripts/packer.py19.7 KB
  • scripts/refusals.py21.6 KB
  • scripts/test_lint.py12.8 KB
  • scripts/test_pack.py20.1 KB
  • scripts/test_procedure.py11.6 KB
  • scripts/test_refusals.py17.6 KB
  • templates/examples/drafting-customer-replies/SKILL.md1.4 KB
  • templates/examples/drafting-customer-replies/reference/categories.md469 B
  • templates/examples/drafting-customer-replies/reference/tone.md290 B
  • templates/examples/screening-vendor-invoices/SKILL.md1.4 KB
  • templates/examples/screening-vendor-invoices/reference/tolerances.md492 B
  • templates/skeleton/SKILL.md477 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…