We welcome contributions — especially new service skills, gotcha documentation from production experience, and error-handling improvements.
-
Create the directory:
mkdir -p plugins/sapcc/skills/<skill-name>
-
Create
SKILL.mdwith required frontmatter:--- name: <skill-name> # must be kebab-case, match directory name description: >- One paragraph describing the skill. Include trigger phrases that agents should match on. version: 1.0.0 metadata: service: [service-name] # MCP tool prefix (nova, neutron, etc.) task: [list, inspect, debug, lifecycle] persona: [developer, platform-engineer] ---
-
Required sections (in order):
## MCP Tools— table of tools with key parameters## Gotchas— numbered list of pitfalls (aim for 5-10)## Common Workflows— step-by-step recipes## Troubleshooting— diagnosed failure scenarios## Security Considerations— data sensitivity, confirmation requirements## Cross-Service References— table linking to other skills## Routing— when to load reference files
-
Add reference files (if needed):
mkdir -p plugins/sapcc/skills/<skill-name>/references/
Keep SKILL.md under 500 lines. Extract deep content to references/.
-
Validate:
python3 tools/validate.py --plugin sapcc
-
Register in marketplace (both formats):
.claude-plugin/marketplace.json— Claude Code.agents/plugins/marketplace.json— Codex/Agents
The most valuable contributions are:
- New gotchas from production experience (with concrete examples)
- Workflow improvements based on real debugging sessions
- Parameter corrections when MCP server tools change
- Cross-service references connecting related skills
The rules file (rules/sapcc-agent-rules.md) provides baseline agent behavior. Changes here affect ALL skill invocations — keep rules universal and test carefully.
| Requirement | Check |
|---|---|
| Frontmatter valid | python3 tools/validate.py passes |
| Name is kebab-case | Matches ^[a-z][a-z0-9]*(-[a-z0-9]+)*$ |
| Name matches directory | Skill name == parent directory name |
| Description ≥ 20 chars | Meaningful for progressive disclosure |
| Under 500 lines | Extract to references/ if longer |
| Parameters verified | Cross-check against MCP server source |
| No secrets in examples | Use placeholders, never real credentials |
# Fork and clone
git clone https://github.com/<your-fork>/openstack-agent-toolkit
cd openstack-agent-toolkit
# Create feature branch
git checkout -b add-sapcc-<service>
# Make changes, validate
python3 tools/validate.py
# Commit (conventional commits preferred)
git commit -m "feat(skills): add sapcc-<service> skill"
# Push and create PR
git push origin add-sapcc-<service>Due to legal reasons, contributors will be asked to accept a DCO when they create their first pull request. This happens in an automated fashion during the submission process. SAP uses the standard DCO text of the Linux Foundation.
We follow the SAP Open Source Code of Conduct.