Contributing to Agora Agent Skills
August 31, 2026 · View on GitHub
Thanks for your interest in contributing! This repository provides reusable skills that help AI coding agents build applications on the Agora platform.
Scope
This repository stores AI agent skills for Agora (agora.io) platform integration, following the Agent Skills open standard. Changes should improve routing accuracy, code generation quality, and maintainability.
Adding a New Product Skill
Examples of existing products added this way: Cloud Recording (references/cloud-recording/),
Server Gateway (references/server-gateway/), Testing Guidance (references/testing-guidance/).
- Create
skills/agora/references/{product}/README.md(Layer 3 — overview, critical rules, topic links, 20–100 lines) - Add an entry to the Products section of
skills/agora/SKILL.md - Create topic files as needed:
skills/agora/references/{product}/{topic}.md(Layer 4 — 34–500 lines) - Apply the freeze-forever test to all inline content (see below)
- Add at least one eval case to
tests/eval-cases.mdfor the new product - Update
skills/agora/SKILL.md:- Add the product to the Products section
- Update the Product Relationships diagram if the new product changes dependencies
- Add relevant rows to Common Product Combinations
- Update Routing and Ambiguity Rules if the new product introduces new cues or disambiguation logic
- Bump the version authorities (see Version Bumping)
Adding a New Platform
- Create
skills/agora/references/{product}/{platform}.md(Layer 4) - Add a link in the product's
README.md
Size Constraint
Individual skill files must not exceed 500 lines. This is a hard limit — context windows are finite, and oversized files crowd out the user's actual project context. If a Layer 4 topic file approaches 500 lines, split it into multiple topic files and link from the product README.
Use wc -l when changing a large topic file. Files at or near the limit should
be split instead of expanded further.
The Freeze-Forever Test
Before adding any factual content inline, ask: will this still be correct in 6 months without any updates?
- Yes (stable API patterns, initialization sequences, token generation, RTC track management): put it inline.
- No (REST API parameter lists, SDK changelogs, vendor configurations, model names, ConvoAI request/response schemas): put it behind an MCP call or an external link. Never hardcode fast-moving content.
The link-first vs inline decision table in README.md already encodes this
principle. Follow it. When in doubt, add a new row to that table and document your
reasoning in the PR description.
The freeze-forever test applies to new content only. Do not remove existing inline examples from RTC, RTM, or token generation files — these are stable APIs where inline examples are the primary competitive value.
Updating a Gotcha or Critical Rule
The 30+ documented gotchas in references/rtc/README.md and
references/conversational-ai/README.md are the most valuable content in this repo.
They represent debugging knowledge that LLMs consistently get wrong. Before updating:
- Verify the behavior against the latest SDK version. Check the release notes linked
at the bottom of
README.md. - If the behavior changed in a specific SDK version, include that version in the gotcha description (e.g., "Fixed in agora-rtc-sdk-ng v4.21").
- Do not remove a gotcha because it "seems obvious" — these were written because
LLMs consistently generated the wrong code. The test cases in
tests/eval-cases.mdprovide the evidence. - If a gotcha no longer applies to any supported SDK version, move it to a
## Historical Notessection at the bottom of the file rather than deleting it.
Updating Agora CLI References
The bundled CLI skill files live under skills/agora/references/cli/ and should track the canonical CLI repository: https://github.com/AgoraIO/cli.
When updating CLI guidance:
-
Install or update the CLI from the canonical installer:
curl -fsSL https://dl.agora.io/cli/install.sh | sh agora version which -a agora -
Record the release in the CLI reference files as
Last verified against Agora CLI <version>, and updateMinimum CLIonly when deliberately raising the floor. Do not stamp a file as last-verified against a release whose behavior you did not actually check. -
Diff the command surface against upstream sources:
agora --help --allagora introspect --jsondocs/commands.mddocs/automation.mddocs/error-codes.mddocs/telemetry.mdCHANGELOG.mdand GitHub Releases
-
Verify claims against
agora introspect --jsonand upstream source at the release tag — not only the upstream changelog. -
Keep install guidance aligned across
cli/install-auth.md,skills/agora/SKILL.md,README.md, and eval cases. -
Update
tests/eval-cases.mdfor new stable commands, changed flags, JSON contracts, or commands that are now valid and should no longer be rejected. -
Preserve the no-hallucination rule: if a command is not in the verified CLI surface or upstream docs, route to the closest real command instead of inventing one.
Required Frontmatter
Every SKILL.md must include:
---
name: kebab-case-name # max 64 chars, unique across repo
description: >-
Trigger phrases and description that help agents recognize when to use
this skill. Include concrete product names and action verbs.
license: MIT
metadata:
author: agora
version: "X.Y.Z"
---
Rules:
- Do NOT use
triggersas a top-level frontmatter field — fold trigger phrases intodescription. (Consistent with agentskills.io standard.) - Use relative links for all local references.
- Put detailed docs under
references/; keepSKILL.mdfocused on workflow.
Naming
- Directory names: lowercase kebab-case
- Skill names (frontmatter
name): unique across repository, lowercase kebab-case - Use
agora-prefix for new product skill directories - Never use
shengwang-prefixes — this repo uses Agora-branded paths throughout
Pull Request Checklist
- Freeze-forever test applied to all new inline content (see above)
- Routing still correct from
skills/agora/SKILL.md - New or changed local links are valid (no broken relative paths)
- No duplicate skill names
- No absolute local paths (
/Users/...or any machine-specific path) - No hardcoded credentials, API keys, or App Certificates
- No Layer 4 topic file exceeds 500 lines
- At least one eval case added or updated in
tests/eval-cases.md(required for new product or platform additions) - If adding a code generation skill: testing guidance updated in
references/testing-guidance/README.md -
scripts/validate-skills.shpasses locally
Local Validation
bash scripts/validate-skills.sh
skills-ref validate skills/agora
claude plugin validate . --strict
claude plugin validate ./.claude-plugin/plugin.json
claude plugin validate ./skills --strict
CI installs skills-ref from the pinned official Agent Skills repository
revision. For local use, install that same revision in a Python 3.11+ virtual
environment before running the command above.
Direct manifest validation may report that the repository-root CLAUDE.md is
not loaded as plugin context. That warning is expected: contributor instructions
stay at the repository root, while runtime instructions live under skills/.
Running Evals
Eval cases live in tests/eval-cases.md. To run them:
- Load the skill in your AI coding assistant (see README — Installation)
- For each case, send the "User Input" to the assistant with the skill active
- Compare the response against "Expected Behavior" and "Pass Criteria"
- Record
PASSorFAILin the Result field - Add the run to the Evaluation Log table at the bottom of
tests/eval-cases.md(date, skill version, pass/fail counts, failed case IDs, fix actions taken)
Run the full suite after every non-trivial skill change. Failed cases drive targeted skill edits — don't ship a fix without verifying the case now passes.
Version Bumping
Versions must stay in sync across these three files. Bump all three together:
| File | Field |
|---|---|
skills/agora/SKILL.md | metadata.version in frontmatter |
.claude-plugin/plugin.json | "version" |
agora/.cursor-plugin/plugin.json | "version" |
Do not add a duplicate version to .claude-plugin/marketplace.json. Claude's
plugin manifest is the version authority for the marketplace entry.
Version rules:
- Patch (
x.y.Z): gotcha fixes, broken link repairs, content corrections - Minor (
x.Y.0): new product or platform added, new eval cases, new topic files - Major (
X.0.0): breaking restructure of skill entry points or routing logic
Document the change in CHANGELOG.md; move it from Unreleased to a dated
[x.y.z] heading when publishing the release.
Plugin & Marketplace Registration
This skill is published to:
- agentskills.io — open skill registry (
.claude-plugin/marketplace.json) - Claude Code plugin marketplace — hosted at
AgoraIO/skillson GitHub (.claude-plugin/plugin.json+.claude-plugin/marketplace.json)
Users install via two slash commands inside Claude Code:
/plugin marketplace add AgoraIO/skills
/plugin install agora@agora-skills
(agora-skills is the marketplace name in marketplace.json; agora is the plugin name.)
To update a registration after a version bump:
- Submit a PR with the three version authorities updated together
- Once merged, users get the update automatically when Claude Code refreshes (
/plugin marketplace update) - For agentskills.io manual updates, follow the agentskills.io submission guide
The Agora Docs MCP (agora-docs-mcp) config is bundled at the plugin root in
.mcp.json, Claude Code's standard discovery location. It is for documentation
traversal only, not for Agora backend/account/project operations.
Verifying URLs
Before opening a PR, check that all https:// links in skill files are reachable:
grep -roh 'https://[^ )]*' skills/ | sort -u | while read url; do
code=$(curl -s -o /dev/null -w "%{http_code}" -L --max-time 10 "$url")
echo "$code $url"
done
Any non-200 response (except intentional 301 redirects) should be investigated and fixed.
Code of Conduct
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold this code.
License
By contributing, you agree that your contributions will be licensed under the MIT License.