CommunityRédaction et éditiongithub.com

SELAT-AI/selat-skills

name: skill-creator

Qu'est-ce que selat-skills ?

selat-skills is a Claude Code agent skill that name: skill-creator.

Compatible avecClaude Code~Codex CLI~Cursor
npx skills add SELAT-AI/selat-skills

Installed? Explore more Rédaction et édition skills: steipete/notion, affaan-m/seo, affaan-m/brand-voice · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

skill-creator

Author a new skill for the selat-skills hub and get it merged, using the official selat skill CLI. A skill is a declarative directory the selat CLI executes — never code that calls selat-pay itself. This is the hub's contribution guide (CONTRIBUTING.md points here); keep it open while you build.

When To Use

Use when someone wants to add a capability to the hub by composing one or more paid federated-catalogue endpoints into a named skill, or asks how the manifest/SKILL.md/evals fit together, how to find a payable endpoint, how to verify it, or how to submit. Not for editing the CLI or router — this is skill content only.

Workflow

The whole loop (matches CONTRIBUTING.md):

selat skill new my-skill --dir skills           # 1. scaffold
#   …edit the files (replace every TODO)…        # 2. author
selat skill validate ./skills/my-skill          # 3. static SOP check
selat skill verify   ./skills/my-skill [--pay]  # 4. live-402 check (THE GATE)
selat skill register ./skills/my-skill          # 5. add index.json entry
npm run validate                                # 6. whole-repo check (what CI runs)
selat skill submit   ./skills/my-skill          # 7. open the PR
  1. Define + scaffold. One skill = one coherent capability; pick the rail (direct Circle nanopayment / routed MPP via the SELAT Router / mixed). Then selat skill new <name> --dir skills writes skills/<name>/ with manifest.json, SKILL.md, references/endpoints.md, evals/evals.json. (No CLI handy? scripts/new-skill.mjs does the same scaffolding offline.)
  2. Discover endpoints in the federated catalogue and record each merchant's serviceUrl (NOT the descriptive provider url), method, path, price. See references/endpoint-discovery.md — this is where most skills break.
  3. Enrich each endpoint's schema — pin the real request shape before writing any body/${param}, from a free source, because a wrong param name or shape still costs money: the SELAT Router settles the payment before the upstream validates the body, and a verify probe checks payability, not param correctness. Pull the gateway's OpenAPI (<serviceUrl-host>/openapi.json), decode the self-describing bazaar schema in the 402 payment-required header, or read the upstream's public API docs — then corroborate against the live API, which is the real source of truth (specs drift: observed tweet_id vs live tweetId, and "only field X required" when the live API rejects a body without more). Record every param (name, required, type, enum, format) in references/endpoints.md and map each manifest ${param} to the real API param name. See references/schema-enrichment.md.
  4. Author — replace every TODO:
    • manifest.jsonname (== folder), maxAmount (cap with headroom, a filter not a price), params (real defaults), steps[] with url = serviceUrl + path, ${param} substitution, body for POST.
    • SKILL.md — frontmatter + sections (When To Use, Workflow, Inputs And Outputs, Gotchas, Validation, References). No TODO may remain.
    • references/endpoints.md and evals/evals.json (skill_name == folder).
  5. Validate (static): selat skill validate ./skills/<name>.
  6. Verify (the gate): selat skill verify ./skills/<name> probes each step's real 402 price/rail (free) and checks it ≤ maxAmount; --pay makes a capped real call to confirm it settles 200. Pass required params as flags. This writes skills/<name>/.selat/verify-receipt.json — the provenance submit attaches to the PR and that gates merge. Fix any step that's unreachable or over cap; prefer first-party providers over proxies.
  7. Register: selat skill register ./skills/<name> auto-adds/updates the index.json entry from the manifest.
  8. Whole-repo check: npm run validate (exactly what CI runs).
  9. Submit: selat skill submit ./skills/<name> (use --dry-run first). It requires a passing verify receipt, then branches, commits skills/<name> + the index.json entry, pushes, and opens a PR with the receipt as provenance. No write access? It prints fork-and-PR commands. A maintainer paid-re-verifies before merge.

Authoring Voice

A skill's reader is the agent; the agent's audience is often a non-technical user. Author for that split:

  • Command blocks are instructions for the agent to execute — never content the user is expected to read.
  • In Workflow, add a "tell the user" line wherever the agent should report back — especially before any spend ("this costs about $X — proceed?") and when relaying results in plain language.
  • Keep endpoint URLs, wallet addresses, and raw response JSON out of what the agent is told to relay; plain language plus the dollar price is the default.

Available Scripts

  • scripts/new-skill.mjs <name> [--rail …] [--kind …] [--dir skills] — offline scaffolder equivalent to selat skill new, for environments without the CLI. Non-interactive; --help for usage.

Inputs And Outputs

InputWhat you provide
CapabilityThe one task the skill performs
EndpointsCatalogue serviceUrl + path + method + price per step
ParamsNamed inputs with sensible defaults

Output: a skill that passes validate, has a passing verify receipt, and is ready for submit.

Gotchas

  • Wire steps to the catalogue serviceUrl, NOT the provider url. A record has a descriptive url (https://api.tomba.io) and a payable serviceUrl (https://mpp.orthogonal.com/tomba). The 402 is served only at the serviceUrl; the provider host yields "no challenge" and a failed verify.
  • POST/PUT params go in body, not the query string — a POST with ?k=v often returns no challenge.
  • maxAmount is a spending filter, not the price. Set it with headroom over the live quote (gateway prices run a few percent above the catalogue) or verify flags the step as over-cap.
  • Give params real defaults so verify (and users) can exercise each step.
  • verify is the gate, and the live 402 is the source of truth. The catalogue lists endpoints the gateway may no longer serve. Never submit a step that doesn't verify; omit it and re-add when it's served.
  • Enrich the schema from a free source before the first paid call — a wrong param still charges. The Router settles payment before the upstream validates the body, and a probe checks payability, not param correctness. Pin the shape from the gateway OpenAPI (<host>/openapi.json), the 402 bazaar extension, or upstream docs, then confirm with verify --pay. Specs drift from the live API; the live API wins (seen: OpenAPI tweet_id vs live tweetId; "only input required" when the live endpoint also demands model/models/preset).
  • ${param} substitutes as a string — no type coercion. A numeric or array field wired as "${n}" sends "8" and 4xx's. Keep string-typed fields in the manifest body; document integer/array fields for a hand-built selat-pay call instead.
  • Prefer first-party providers over proxies when equivalent — cheaper/equal, with real identity and recourse.
  • The authoring SOP lives only at the repo root references/agent-skill-authoring-sop.md; don't copy it into your skill.
  • name == folder, kebab-case, consistent across folder, manifest.json, and SKILL.md frontmatter; evals.json skill_name == folder too.

Validation

Before submit, all must hold:

  • selat skill validate ./skills/<name> → passes (also the per-skill CI check).
  • selat skill verify ./skills/<name> → every step reachable and ≤ maxAmount (writes the verify receipt). --pay confirms a real settled 200.
  • npm run validate → 0 errors (whole-repo + index.json consistency).
  • No TODO, secrets, or orth/CLI/subprocess calls — the skill is declarative.

Underlying free single-step probe (what verify runs per step):

selat-pay POST "https://mpp.orthogonal.com/<merchant>/<path>" \
  --body '{"<param>":"<value>"}' --chain base --probe-only
# success prints: detected mpp=yes, mode=routed-mpp, price=$X on eip155:8453

--chain base is only the flag the probe requires — probing reads a free, chain-independent quote and never settles. The settlement chain for a paid run is resolved at runtime from the wallet's funded Gateway balance, so a manifest does not declare one.

References

  • CONTRIBUTING.md — repo-level quick reference that points back to this skill.
  • references/manifest-reference.mdselat-skill/v1 manifest schema, params, rails, examples.
  • references/endpoint-discovery.md — finding endpoints in the catalogue and the serviceUrl rule.
  • references/schema-enrichment.md — pinning each endpoint's request schema from OpenAPI / the 402 bazaar extension / upstream docs, and verifying it against the live API.
  • references/submission-checklist.md — the selat skill command sequence + pre-PR checklist.
  • ../../references/agent-skill-authoring-sop.md — the authoring standard.

Skills associés

steipete/notion

Notion CLI/API for pages, Markdown content, data sources, files, comments, search, Workers, and raw API calls.

community

affaan-m/seo

Audit, plan, and implement SEO improvements across technical SEO, on-page optimization, structured data, Core Web Vitals, and content strategy. Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping.

community

affaan-m/brand-voice

Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that profile across content, outreach, and social workflows. Use when the user wants voice consistency without generic AI writing tropes.

community

affaan-m/crosspost

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

community

affaan-m/x-api

X/Twitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.

community

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

community