Lawve-Prep: Package a Skill for Public Distribution on Lawve
Turn a skill in any state — packaged, half-packaged, a bare SKILL.md, or an idea in a
sentence — into something that can stand in a public legal catalogue: correctly structured,
honestly described, properly attributed, safe to review, and accompanied by the exact form
entries the submission page asks for.
The pipeline has six steps. The order is deliberate: the gate comes first because no
packaging effort should be spent on a skill that will be declined, and provenance comes
second because the licence decision shapes everything downstream.
Intake → Gate → Provenance → Transform → Validate → Package.
Step 0 — Intake
Identify what the user handed over:
- A
.skill or .zip archive — unzip it. Both are zip files.
- A folder or bare
SKILL.md — work from it directly. A bare SKILL.md becomes a folder
named after its frontmatter name.
- A plugin — a bundle with
.claude-plugin/, a plugin-level CLAUDE.md, or .mcp.json
contains more than one thing. Lawve takes one skill per submission. Split it: each skill
becomes its own package, plugin-level instructions get folded into the skill that needs
them (see transforms), and cross-references between the halves are updated or cut cleanly.
- A raw idea — gate the idea first (Step 1); do not build a skill you would then
decline. If it passes, build it with the
skill-creator skill where available, otherwise
draft a SKILL.md directly following Anthropic's skill-authoring practices (frontmatter
name + pushy description; body instructions; bundled resources only where they earn their
place). Then continue through the pipeline like any other input.
Read the whole skill before judging it — SKILL.md and every bundled file. Half the problems
live in the bundled files.
Step 1 — Gate
Read resources/gate.md and apply it. Three outcomes:
- Proceed — the skill serves legal work in some form. The bar is broad: practice,
litigation, drafting, legal education, legal research, law-office operations, document
production for legal audiences, and meta-skills for legal AI all qualify.
- Offer a legal adaptation — the skill is general-purpose but a legal layer would earn
its place in the catalogue (a text-to-audio skill gains citation and quotation handling; a
formatting skill gains brief-and-memo structures). Propose the superset — everything it
does now, plus the legal layer — and get the user's yes before building it.
- Decline — no plausible legal use even with adaptation, or a safety, licensing, or
professional-responsibility bar that adaptation cannot cure. Decline in plain terms: what
the bar is, and what (if anything) would change the answer. Never quietly package
something the gate should have stopped.
Step 2 — Provenance and licence
Establish whose work this is before touching the files.
- The user's original work → the user picks the licence; default Apache-2.0 (MIT also
fine). Both are on Lawve's accepted list.
- A derivative of someone else's skill → match the upstream licence where it permits
derivatives (Apache-2.0, MIT, BSD, and CC-BY all do). Get attribution right in three places:
frontmatter (
derived_from), an attribution section in the SKILL.md body, and the NOTICE
file, which itemizes what is upstream and what is added and disclaims endorsement.
- Upstream licence forbids or is absent — "All Rights Reserved," "No License," or a
proprietary notice → stop. The skill cannot be published without permission. Say so.
- A placeholder copyright line — "Contributors," a scaffolding default, a company name
that doesn't fit — is a question, not an answer. Ask the user who wrote it rather than
assuming either way. Scaffolding tools routinely stamp wrong attributions on original
work, and original authors routinely forget to replace them.
Step 3 — Transform
Read resources/transforms.md and apply every transform that fits. In brief: fix the
structure (folder name, resources/ directory, LICENSE and NOTICE inside the folder);
rewrite the frontmatter (description under 1,024 characters with honest triggers and a
host-requirements sentence where needed); fold in any plugin-level logic the skill depends
on; replace host-specific tool names with host-neutral instructions; convert hard external
dependencies into a graceful ladder; repair orphaned files and broken links; add the
limitations, jurisdiction-honesty, and bundled-resources sections; and clean up code.
The one meta-rule: the description on the form and the description in the frontmatter must
tell the same truth as the skill's body. Every time a transform changes what the skill
does — a new format, a renamed dependency, an added fallback — check whether the description
still describes it.
Step 4 — Validate
Where the host can run Python, run the bundled validator:
python scripts/validate.py <skill-folder>
It checks structure, frontmatter, description length, link resolution, orphaned files,
leftover host-specific tokens, and the presence of LICENSE, NOTICE, and a limitations
section. Fix everything it reports and run it again; a package ships only on a clean pass.
Where the host cannot run Python, perform the same checks by hand — the checklist at the end
of resources/requirements.md mirrors the script exactly.
Two checks the script cannot do, so do them yourself every time:
- Read the final SKILL.md top to bottom as a stranger. Does it run correctly with
nothing but what is inside the folder? Anything it assumes — a connector, a companion
skill, a plugin file, a directory layout — must be either bundled, laddered, or disclosed.
- Check the catalogue for duplicates. Use the Lawve connector's search where connected;
otherwise web-search the lawve.ai catalogue; otherwise say plainly that the duplicate
check could not be run. A near-duplicate is not automatically fatal — but the user decides
that with the information, not without it.
Step 5 — Package and deliver
- Zip the folder so the archive contains the named directory at its root:
zip -r <name>.zip <name>/. Deliver as .zip — browsers and Finder handle it
predictably, and Lawve accepts it.
- Produce the form entries block: skill name; description (exact text, with character
count); jurisdictions; category recommendation with one line of reasoning; language;
visibility; licence. Flag explicitly which fields differ from the form's defaults — as of
this writing the licence default is AGPL 3.0 and jurisdictions default to All, so most
submissions need the licence changed and some need jurisdictions narrowed.
- Report what changed, briefly: the substantive adaptations first (what was folded in,
laddered, or added), the mechanical fixes second. The user should be able to see at a
glance what is different about the published version and why.
Bundled resources
resources/requirements.md — the codified Lawve submission requirements: form fields and
limits, directory conventions, attestations, review notes, and the manual validation
checklist. Read at the start of any packaging run.
resources/gate.md — the accept / adapt / decline criteria: the law-relatedness test,
safety and code screens, professional-responsibility flags, licensing bars, duplicates,
and the quality floor. Read in Step 1.
resources/transforms.md — the standard compliance transforms with the failure each one
prevents. Read in Step 3.
scripts/validate.py — the programmatic validator. Python 3, standard library only.
Run in Step 4 where the host allows.
Limitations and risks
This skill packages other skills for public distribution. It is not legal advice, and its
gate is an editorial judgment, not a legal clearance.
The requirements are a snapshot. Lawve's form fields, limits, licence list, and review
criteria are recorded in resources/requirements.md as of the version date and will drift.
Where the live form disagrees with the reference file, the live form wins — and the
reference file should be updated.
The licence step depends on honest provenance. The skill asks who wrote the input and
takes the answer it is given. It cannot detect misattributed authorship, and a package built
on a wrong answer misattributes in three places at once.
The gate can be wrong in both directions. A declined skill may have a legal use the gate
did not see; an accepted one may have a problem review catches later. Lawve's own review is
the real backstop; the gate exists so the user doesn't spend effort on obvious rejections.
Packaging improves presentation, not substance. A weak skill emerges from this pipeline
structured, attributed, and disclosed — and still weak. The quality floor in the gate is a
floor, not an endorsement.
The duplicate check degrades. With no catalogue access and no web search, it does not
run, and the skill says so rather than pretending it did.
The bundled validator uses only the Python standard library, makes no network calls, spawns
no subprocesses, and writes nothing — it only reads the folder it is pointed at.
1---2name: lawve-prep3description: Takes a skill — a .skill or .zip archive, a bare SKILL.md, a folder, or just a raw idea — and produces a package ready for public distribution on lawve.ai, plus the exact entries for the submission form. Runs a gate first: skills with no plausible legal use, unsafe code, or licensing bars are declined with reasons, and general-purpose skills that could serve legal work are offered a legal adaptation instead. Then applies the standard compliance transforms — structure, metadata, attribution, dependency ladders, orphaned-file repair, limitations disclosure — validates the result, and delivers a zip. Raw ideas are gated first, built (via skill-creator where available), then adapted. Use for "make this Lawve-compliant," "prep this skill for Lawve," "package for lawve.ai," "is this suitable for Lawve," "get my skill ready to publish," or any request to ready a skill for the Lawve catalogue.4---5
6<!-- token-scan: exempt — the intake step names plugin config files -->
7
8# Lawve-Prep: Package a Skill for Public Distribution on Lawve
9
10Turn a skill in any state — packaged, half-packaged, a bare SKILL.md, or an idea in a
11sentence — into something that can stand in a public legal catalogue: correctly structured,
12honestly described, properly attributed, safe to review, and accompanied by the exact form
13entries the submission page asks for.
14
15The pipeline has six steps. The order is deliberate: the gate comes first because no
16packaging effort should be spent on a skill that will be declined, and provenance comes
17second because the licence decision shapes everything downstream.
18
19**Intake → Gate → Provenance → Transform → Validate → Package.**
20
21## Step 0 — Intake
22
23Identify what the user handed over:
24
25- **A `.skill` or `.zip` archive** — unzip it. Both are zip files.
26- **A folder or bare `SKILL.md`** — work from it directly. A bare SKILL.md becomes a folder
27 named after its frontmatter `name`.
28- **A plugin** — a bundle with `.claude-plugin/`, a plugin-level `CLAUDE.md`, or `.mcp.json`
29 contains more than one thing. Lawve takes one skill per submission. Split it: each skill
30 becomes its own package, plugin-level instructions get folded into the skill that needs
31 them (see transforms), and cross-references between the halves are updated or cut cleanly.
32- **A raw idea** — gate the *idea* first (Step 1); do not build a skill you would then
33 decline. If it passes, build it with the `skill-creator` skill where available, otherwise
34 draft a SKILL.md directly following Anthropic's skill-authoring practices (frontmatter
35 name + pushy description; body instructions; bundled resources only where they earn their
36 place). Then continue through the pipeline like any other input.
37
38Read the whole skill before judging it — SKILL.md and every bundled file. Half the problems
39live in the bundled files.
40
41## Step 1 — Gate
42
43Read `resources/gate.md` and apply it. Three outcomes:
44
45- **Proceed** — the skill serves legal work in some form. The bar is broad: practice,
46 litigation, drafting, legal education, legal research, law-office operations, document
47 production for legal audiences, and meta-skills for legal AI all qualify.
48- **Offer a legal adaptation** — the skill is general-purpose but a legal layer would earn
49 its place in the catalogue (a text-to-audio skill gains citation and quotation handling; a
50 formatting skill gains brief-and-memo structures). Propose the superset — everything it
51 does now, plus the legal layer — and get the user's yes before building it.
52- **Decline** — no plausible legal use even with adaptation, or a safety, licensing, or
53 professional-responsibility bar that adaptation cannot cure. Decline in plain terms: what
54 the bar is, and what (if anything) would change the answer. Never quietly package
55 something the gate should have stopped.
56
57## Step 2 — Provenance and licence
58
59Establish whose work this is before touching the files.
60
61- **The user's original work** → the user picks the licence; default Apache-2.0 (MIT also
62 fine). Both are on Lawve's accepted list.
63- **A derivative of someone else's skill** → match the upstream licence where it permits
64 derivatives (Apache-2.0, MIT, BSD, and CC-BY all do). Get attribution right in three places:
65 frontmatter (`derived_from`), an attribution section in the SKILL.md body, and the NOTICE
66 file, which itemizes what is upstream and what is added and disclaims endorsement.
67- **Upstream licence forbids or is absent** — "All Rights Reserved," "No License," or a
68 proprietary notice → stop. The skill cannot be published without permission. Say so.
69- **A placeholder copyright line** — "Contributors," a scaffolding default, a company name
70 that doesn't fit — is a question, not an answer. Ask the user who wrote it rather than
71 assuming either way. Scaffolding tools routinely stamp wrong attributions on original
72 work, and original authors routinely forget to replace them.
73
74## Step 3 — Transform
75
76Read `resources/transforms.md` and apply every transform that fits. In brief: fix the
77structure (folder name, `resources/` directory, LICENSE and NOTICE inside the folder);
78rewrite the frontmatter (description under 1,024 characters with honest triggers and a
79host-requirements sentence where needed); fold in any plugin-level logic the skill depends
80on; replace host-specific tool names with host-neutral instructions; convert hard external
81dependencies into a graceful ladder; repair orphaned files and broken links; add the
82limitations, jurisdiction-honesty, and bundled-resources sections; and clean up code.
83
84The one meta-rule: **the description on the form and the description in the frontmatter must
85tell the same truth as the skill's body.** Every time a transform changes what the skill
86does — a new format, a renamed dependency, an added fallback — check whether the description
87still describes it.
88
89## Step 4 — Validate
90
91Where the host can run Python, run the bundled validator:
92
93```bash
94python scripts/validate.py <skill-folder>
95```
96
97It checks structure, frontmatter, description length, link resolution, orphaned files,
98leftover host-specific tokens, and the presence of LICENSE, NOTICE, and a limitations
99section. Fix everything it reports and run it again; a package ships only on a clean pass.
100
101Where the host cannot run Python, perform the same checks by hand — the checklist at the end
102of `resources/requirements.md` mirrors the script exactly.
103
104Two checks the script cannot do, so do them yourself every time:
105
1061. **Read the final SKILL.md top to bottom as a stranger.** Does it run correctly with
107 nothing but what is inside the folder? Anything it assumes — a connector, a companion
108 skill, a plugin file, a directory layout — must be either bundled, laddered, or disclosed.
1092. **Check the catalogue for duplicates.** Use the Lawve connector's search where connected;
110 otherwise web-search the lawve.ai catalogue; otherwise say plainly that the duplicate
111 check could not be run. A near-duplicate is not automatically fatal — but the user decides
112 that with the information, not without it.
113
114## Step 5 — Package and deliver
115
116- Zip the folder so the archive contains the named directory at its root:
117 `zip -r <name>.zip <name>/`. Deliver as `.zip` — browsers and Finder handle it
118 predictably, and Lawve accepts it.
119- Produce the **form entries block**: skill name; description (exact text, with character
120 count); jurisdictions; category recommendation with one line of reasoning; language;
121 visibility; licence. Flag explicitly which fields differ from the form's defaults — as of
122 this writing the licence default is AGPL 3.0 and jurisdictions default to All, so most
123 submissions need the licence changed and some need jurisdictions narrowed.
124- Report what changed, briefly: the substantive adaptations first (what was folded in,
125 laddered, or added), the mechanical fixes second. The user should be able to see at a
126 glance what is different about the published version and why.
127
128## Bundled resources
129
130- `resources/requirements.md` — the codified Lawve submission requirements: form fields and
131 limits, directory conventions, attestations, review notes, and the manual validation
132 checklist. Read at the start of any packaging run.
133- `resources/gate.md` — the accept / adapt / decline criteria: the law-relatedness test,
134 safety and code screens, professional-responsibility flags, licensing bars, duplicates,
135 and the quality floor. Read in Step 1.
136- `resources/transforms.md` — the standard compliance transforms with the failure each one
137 prevents. Read in Step 3.
138- `scripts/validate.py` — the programmatic validator. Python 3, standard library only.
139 Run in Step 4 where the host allows.
140
141## Limitations and risks
142
143This skill packages other skills for public distribution. It is not legal advice, and its
144gate is an editorial judgment, not a legal clearance.
145
146**The requirements are a snapshot.** Lawve's form fields, limits, licence list, and review
147criteria are recorded in `resources/requirements.md` as of the version date and will drift.
148Where the live form disagrees with the reference file, the live form wins — and the
149reference file should be updated.
150
151**The licence step depends on honest provenance.** The skill asks who wrote the input and
152takes the answer it is given. It cannot detect misattributed authorship, and a package built
153on a wrong answer misattributes in three places at once.
154
155**The gate can be wrong in both directions.** A declined skill may have a legal use the gate
156did not see; an accepted one may have a problem review catches later. Lawve's own review is
157the real backstop; the gate exists so the user doesn't spend effort on obvious rejections.
158
159**Packaging improves presentation, not substance.** A weak skill emerges from this pipeline
160structured, attributed, and disclosed — and still weak. The quality floor in the gate is a
161floor, not an endorsement.
162
163**The duplicate check degrades.** With no catalogue access and no web search, it does not
164run, and the skill says so rather than pretending it did.
165
166The bundled validator uses only the Python standard library, makes no network calls, spawns
167no subprocesses, and writes nothing — it only reads the folder it is pointed at.