Publish a skill
This guide walks the full publish path — scaffold, write, sign in, ship — in about ten minutes.
1. Install the CLI
npm install -g @amitte-ai/cli
skills --version
If skills isn't on your PATH after install, your global npm bin directory probably isn't either. Run npm config get prefix to find it.
2. Scaffold
skills init claude-code/launch-checklist -d "Pre-launch QA for shipping a Claude Code project"
cd claude-code-launch-checklist
This creates two files:
manifest.json— the canonical metadata (id, version, capabilities, etc.)skill.md— the actual instruction content the agent will read
The directory name uses hyphens because filesystems don't love slashes.
3. Write the skill
Open skill.md and replace the scaffolded sections with real content.
A good skill is:
- Specific. "How to ship an iOS app" beats "iOS development".
- Bounded. Cover one task end-to-end; don't try to teach a whole framework.
- Actionable. Include the exact commands, decisions, and pitfalls — not just background.
- Honest about limits. Note what the skill is not for.
The judge LLM scores on these dimensions plus prompt-injection safety.
4. Validate locally
skills eval
This runs the same first three pipeline stages the registry will run server-side: schema validation, prompt-injection lint, artifact hash check. Catches mistakes before you spend a round trip.
5. Sign in
skills login
You'll see a one-time code and a URL — open the URL, enter the code, approve "Authorize Amitte" on GitHub. The CLI saves a token at ~/.config/amitte/credentials.json (mode 0600).
The token is a GitHub access token. Amitte uses it to identify you, never to make changes on your behalf.
6. Publish
skills publish
The CLI:
- Re-runs local eval (unless
--skip-eval). - Computes the artifact SHA-256.
- POSTs
{ manifest, artifact_base64, publisher_handle }to/v1/submit. - The server runs six stages: schema → injection-lint → duplicate-check → adversarial-eval → content-eval → policy.
- On pass, you get back a
submission_idand a published URL.
✓ published
Submission: 33ef869f-62b3-4cbb-bed3-f9aa6041cb0e
URL: https://amitte.com/s/claude-code/launch-checklist
7. (Optional) Watch the pipeline
If you publish in async mode (coming soon — currently inline), poll status:
skills status <submission_id> --watch
What "trust tier" means
Every published skill carries a tier badge:
| Tier | How |
|---|---|
| unverified | Default. Anyone with a GitHub login can publish. |
| verified | Publisher proved control of a domain via DNS TXT. See Verify your domain. |
| official | Manually awarded to the platform's curated skills. |
Your tier applies to future publishes. Existing skills keep the tier they had at publish time. To bring older skills up to your current tier, re-publish them with a version bump.
Common rejections
prompt-injection-lint: artifact contains overt prompt-injection patterns— yourskill.mdincludes "ignore previous instructions" or similar. Rephrase.policy: license "<x>" is not permitted— pick a license from the OSI / Creative Commons approved lists.CC-BY-4.0is the platform default.duplicate: <id>@<version> already exists— bump the version inmanifest.json.
That's the full loop. From here read Install a skill for the consumer side, or Verify your domain for the trust upgrade.
Frequently asked
- What do I need to publish a skill to Amitte?
- A GitHub account and the `@amitte-ai/cli` package. Run `skills init` to scaffold a manifest, fill in the body markdown, then `skills publish`.
- How long does publishing take?
- About 30 seconds. The submission pipeline runs schema validation, prompt-injection lint, content evaluation, and signing in parallel.
- What trust tier do new publishers get?
- Every new publisher starts as `unverified`. Verify a domain via DNS TXT record to upgrade to `verified` and earn the trust badge on your skills.
- Is publishing free?
- Yes. There are no publishing fees, no API rate limits for individual publishers, and no paid tier.