← All skills
external-service-authoring
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By SimaDevelopment/opsiforce (GitHub) · coding · 42 stars · scanned at commit c54d8e3
Building a Custom External Service on SDK 2 as a transparent proxy in front of an outside system — the order of work, Stop 1, service.json forms and Event types, Service routes and pass-through groups, upstream credentials, form handlers and hooks, webhooks and deliver(), unit and live tests, the Service skill, PUBLISH.md and the hand-over. Load it before designing, writing, testing, publishing or upgrading the service.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
The author does not mention this. Expected for a coding skill.
Found in 1 place.
Sends data to these websites: auth.example.com
This is disclosed by the author in the skill's SKILL.md or README.
Found in 28 places.
Show 17 more
- agent-config/agents/external-service-builder/skills/external-service-authoring/references/handlers.md, line 104
curl -s -H "$AUTH" -H 'content-type: application/json' -d '{}' "$LANE/probe/service/buttons/testConnection" - agent-config/agents/external-service-builder/skills/external-service-authoring/references/handlers.md, line 116
const answer = await kit.fetch('/.well-known/opsiforce/options/listBoards', { - agent-config/agents/external-service-builder/skills/external-service-authoring/references/handlers.md, line 122
const saved = await kit.fetch('/.well-known/opsiforce/hooks/onProjectConfigurationSaved', { - agent-config/agents/external-service-builder/skills/external-service-authoring/references/inbound.md, line 71
`note`, and `upstream.fetch(ctx, …)` works for a follow-up read. - agent-config/agents/external-service-builder/skills/external-service-authoring/references/inbound.md, line 131
const answer = await kit.fetch('/.well-known/opsiforce/webhook', { method: 'POST', headers: { 'x-signature': signed }, body }); - agent-config/agents/external-service-builder/skills/external-service-authoring/references/patterns.md, line 87
const answer = await fetch('https://auth.example.com/oauth/token', { - agent-config/agents/external-service-builder/skills/external-service-authoring/references/patterns.md, line 119
const answer = await api.fetch(ctx, `/v1/cards/${encodeURIComponent(cardId)}`); - agent-config/agents/external-service-builder/skills/external-service-authoring/references/patterns.md, line 401
const answer = await api.fetch(ctx, '/meta'); - agent-config/agents/external-service-builder/skills/external-service-authoring/references/review-stops.md, line 116
- Development refuses a request with no Caller identity: `curl -si "localhost:$APP_PORT/"` answers `401` - agent-config/agents/external-service-builder/skills/external-service-authoring/references/routes.md, line 138
- `upstream.fetch(ctx, path, init?)` calls the upstream from your own code with the same credentials: - agent-config/agents/external-service-builder/skills/external-service-authoring/references/service-skill.md, line 39
curl -s -H "Authorization: Bearer $SERVICE_GATEWAY_API_KEY" "https://<slug>.$EXTERNAL_SERVICES_HOST/v1/me/boards" - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 40
const answer = await kit.fetch('/v1/cards/C1?list=L2', { method: 'PUT' }); - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 52
const answer = await kit.fetch('/v1/cards/C1?list=L2', { method: 'PUT' }); - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 72
- `kit.fetch(path, init)` answers like the Service host; `kit.service` is the `service` handle - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 97
curl -s -H "$AUTH" "$LANE" | jq # the service, Development, the Test Project - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 98
curl -s -H "$AUTH" -H 'content-type: application/json' -d '{}' -X POST "$LANE/test-project" - agent-config/agents/external-service-builder/skills/external-service-authoring/references/testing.md, line 99
curl -s -H "$AUTH" "$LANE/test-project/configuration" | jq # its saved settings (secrets masked), missing fields
and 8 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'external-service-authoring' ] || [ -L ~/.agents/skills/'external-service-authoring' ]; then echo 'A skill folder named external-service-authoring already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/SimaDevelopment/opsiforce' "$d" && git -C "$d" checkout --quiet 'c54d8e35f50ac35b3b2c7ba8d4fca2205a740cb9' -- 'agent-config/agents/external-service-builder/skills/external-service-authoring' && mkdir -p ~/.agents/skills && cp -R "$d"/'agent-config/agents/external-service-builder/skills/external-service-authoring' ~/.agents/skills/'external-service-authoring' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'external-service-authoring' ~/.claude/skills/'external-service-authoring' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for SimaDevelopment/opsiforce shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/SimaDevelopment/opsiforce/)
Score history
| Date | Version | Score |
|---|
| 2026-11-08 | c54d8e3 | 92 |