56 results available
Sign in
Skills directory

onboard-context-matic

github

·

Last changed
Hardened

This skill has been hardened by Chainguard

Last changed

This version passed the hardening gate. Hardening applied 8 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 3. Review findings remaining: 8.


Open before hardening

None

Open after hardening

None


Expand
File
Group
Subtype
Severity
Status

No findings available

0 findings


SKILL.md

Onboarding: ContextMatic MCP

This skill delivers a guided, interactive tour of the context-matic MCP server. Follow every phase in order. Stop after each interaction point and wait for the user's reply before continuing.


Phase 0 — Opening statement and tool walkthrough

Begin with a brief, plain-language explanation of what the server does. Say it in your own words based on the following facts:

After explaining the problem the server solves, walk through each of the four tools as if introducing them to someone using the server for the first time. For each tool, explain:

  • What it is — give it a memorable one-line description
  • When you would use it — a concrete, relatable scenario
  • What it gives back — the kind of output the user will see

Use the following facts as your source, but say it conversationally — do not present a raw table:

End this section by telling the user that you'll demonstrate the four core discovery and integration tools live during the tour, starting with fetch_api right now. Make it clear that this tour is focused on those core ContextMatic server tools rather than every possible helper the broader workflow might use.


Phase 1 — Show available APIs

1a. Detect the project language

Before calling fetch_api, determine the project's primary language by inspecting workspace files:

  • Look for package.json + .ts/.tsx files → typescript
  • Look for *.csproj or *.sln → csharp
  • Look for requirements.txt, pyproject.toml, or *.py → python
  • Look for pom.xml or build.gradle → java
  • Look for go.mod → go
  • Look for Gemfile or *.rb → ruby
  • Look for composer.json or *.php → php
  • If no project files are found, fall back to typescript.

Store the detected language — you will pass it to every subsequent tool call.

1b. Fetch available APIs

Tell the user which language you detected and that you are fetching the available APIs — for example: "I can see this is a TypeScript project. Let me fetch the APIs available for TypeScript."

Call fetch_api with language = the detected language and key = "" so the tool returns the full list of available APIs.

Display the results as a formatted list, showing each API's name and a one-sentence summary of its description.

Example display format (adapt to actual results):

Here are the APIs currently available through this server:

1. PayPal Server SDK   — Payments, orders, subscriptions, and vault via PayPal REST APIs.
2. Spotify Web API     — Music/podcast discovery, playback control, and library management.
....

Phase 2 — API selection (interaction)

Ask the user:

Wait for the user's reply before continuing.

Store the chosen API's key value from the fetch_api response — you will pass it to all subsequent tool calls. Also note the API's name for use in explanatory text.


Phase 3 — Explain the chosen API

Before calling, say something like: "Great choice — let me get an overview of [API name] for you."

Call ask with:

  • key = chosen API's key
  • language = detected language
  • query = "Give me a high-level overview of this API: what it does, what the main controllers or modules are, how authentication works, and what the first step to start using it is."

Present the response conversationally. Highlight:

  • What the API can do (use cases)
  • How authentication works (credentials, OAuth flows, etc.)
  • The main SDK controllers or namespaces
  • The NPM/pip/NuGet/etc. package name

Phase 4 — Integration in the project language (interaction)

Ask the user:

Wait for the user's reply.

Before calling, say something like: "On it — let me look that up." or "Sure, let me pull up the quickstart."

Call ask with:

  • key = chosen API's key
  • language = detected language
  • query = the user's stated goal, or "Show me a complete integration quickstart: install the SDK, configure credentials, and make the first API call." if they asked for the full guide.

Present the response.


Tell the user:

Before calling, say something like: "Let me search for the [model name] model so you can see what the result looks like."

Pick a representative model from the chosen API (examples below) and call model_search with:

  • key = the previously chosen API key (for example, paypal or spotify)
  • language = the detected project language
  • query = the representative model name you picked
API keyGood demo query

paypal

Order

spotify

TrackObject

Display the result, pointing out:

  • The exact model name and its description
  • A few interesting typed properties (highlight optional vs. required)
  • Any nested model references (e.g., PurchaseUnit[] | undefined)

Tell the user:


Tell the user:

Before calling, say something like: "Let me fetch the [endpoint name] endpoint so you can see the parameters and a live code sample."

Pick a representative endpoint for the chosen API and call endpoint_search with an explicit argument object:

  • key = the API key you are demonstrating (for example, paypal or spotify)
  • query = the endpoint / SDK method name you want to look up (for example, createOrder or getTrack)
  • language = the user's project language (for example, "typescript" or "python")

For example:

API key (key)Endpoint name (query)Example language

paypal

createOrder

user's project language

spotify

getTrack

user's project language

Display the result, pointing out:

  • The method name and description
  • The request parameters and their types
  • The response type
  • The full code sample

Tell the user:


Phase 7 — Closing: what you can ask

End the tour with a summary list of things the user can now ask the agent to do. Present this as a formatted menu:


What you can do with this MCP

Quickstart: your first API call

/integrate-context-matic Set up the Spotify TypeScript SDK and fetch my top 5 tracks.
Show me the complete client initialization and the API call.
/integrate-context-matic How do I authenticate with the Twilio API and send an SMS?
Give me the full PHP setup including the SDK client and the send call.
/integrate-context-matic Walk me through initializing the Slack API client in a Python script and posting a message to a channel.

Framework-specific integration

/integrate-context-matic I'm building a Next.js app. Integrate the Google Maps Places API
to search for nearby restaurants and display them on a page. Use the TypeScript SDK.
/integrate-context-matic I'm using Laravel. Show me how to send a Twilio SMS when a user
registers. Include the PHP SDK setup, client initialization, and the controller code.
/integrate-context-matic I have an ASP.NET Core app. Add Twilio webhook handling so I can receive delivery status callbacks when an SMS is sent.

Chaining tools for full integrations

/integrate-context-matic I want to add real-time order shipping notifications to my
Next.js store. Use Twilio to send an SMS when the order status changes to "shipped". Show me
the full integration: SDK setup, the correct endpoint and its parameters, and the TypeScript code.
/integrate-context-matic I need to post a Slack message every time a Spotify track changes
in my playlist monitoring app. Walk me through integrating both APIs in TypeScript — start by
discovering what's available, then show me the auth setup and the exact API calls.
/integrate-context-matic In my ASP.NET Core app, I want to geocode user addresses using
Google Maps and cache the results. Look up the geocode endpoint and response model, then
generate the C# code including error handling.

Debugging and error handling

/integrate-context-matic My Spotify API call is returning 401. What OAuth flow should I
be using and how does the TypeScript SDK handle token refresh automatically?
/integrate-context-matic My Slack message posts are failing intermittently with rate limit
errors. How does the Python SDK expose rate limit information and what's the recommended retry
pattern?


Notes for the agent

  • If the user picks an API that is not in the fetch_api results, tell them it is not currently available and offer to continue the tour with one that is.
  • All tool calls in this skill are read-only — they do not modify the project, install packages, or write files.
  • When showing code samples from endpoint_search or ask, present them in fenced code blocks with the correct language tag.

Install

Install with chainctl
chainctl skill install public/github/onboard-context-matic:latest
Get started with chainctl
View source

Harden your own skills

Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.

Provenance

Upstream sourcehttps://github.com/github/awesome-copilot
Upstream commit2201a49dd6f972ac4f685d03361d58c9c9206690
OCI reference

skills.cgr.dev/public/github.com/github/skills/onboard-context-matic:latest

License

MIT

Files

HARDENING.md

LICENSE

SKILL.md


The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.