Browse topics
Skills
Markdown files that teach agents when and how to use your applet's methods.
A skill is a markdown file that teaches an agent how to accomplish a task using your applet’s methods. Skills live alongside the applet at applets/<slug>/skills/<skill-name>.md. They are pure documentation - no code - and ship inside the bundle.
Where methods define what an applet can do, skills describe how to use those methods well: which to call, in what order, and with what constraints.
Shape of a skill
# Find a Credential for a Task Without Revealing the Secret
Decide whether the user already has a credential for a host using
metadata-only lookups.
## When to use this skill
- Agent is about to ask the user to log in; wants to confirm a credential exists first.
- User says "use my GitHub credentials" and the agent must confirm coverage.
## Steps
1. Try the boolean shortcut: `@rightplace/credential.checkExists({ kind, host })`
2. Fall back to host search: `@rightplace/credential.findForHost({ host })`
3. Confirm by metadata: `@rightplace/credential.getMeta({ credential_id })`
4. Hand off; do not read the secret.
## Constraints
- NEVER call `@rightplace/credential.get` (returns the plaintext secret).
Conventions
- One skill per task. Name the file for the outcome, not the method.
- Open with a one-line statement of what the skill achieves and when to use it.
- Reference methods by their canonical name,
@<author>/<slug>.<verb>, with the exact params. - State constraints explicitly: which methods are off-limits, what must be confirmed first, what not to reveal.
How agents find them
Skills are indexed when the bundle installs. When an agent’s task matches a skill’s “when to use” description, the skill is surfaced so the agent follows your intended workflow instead of guessing at the method surface.
Keep skills truthful
A skill must mirror the applet’s real method surface. If a skill documents a call that the applet does not actually make, it teaches agents the wrong contract. Grep your own methods/ and applet.json before writing the examples, and use the exact names and param shapes that exist.