agentleFS
GitHubKnown publishergithub/gh-aw/.github/skills/create-connector/SKILL.md

create-connector

Skill5.6k starsChanged 6 months agoMITView on GitHub

Create or extend a declaration-only third-party connector, with narrow reads, separate safe outputs, optional protected triggers, and offline conformance evidence.

1 other project uses a version of this.

Trending

Quiet since March.thin dataabout the whole repository

Dec 2025: 0 mentionsJan 2026: 0 mentionsFeb 2026: 2 mentionsMar 2026: 1 mentionApr 2026: 0 mentionsMay 2026: 0 mentionsJun 2026: 0 mentionsJul 2026: 0 mentionsAug 2026: 0 mentionsSep 2026: 0 mentionsOct 2026: 0 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the github/gh-aw repository that our weekly crawl found: only 3 in all, so this is a hint, not a trend. There is no adoption data for this file yet.

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 7 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when adding a provider or extending its declarative capabilities.

    line 8
  2. Very specific:

    Read the connector specification and only the closest declaration in .github/workflows/connectors/.

    line 13
  3. Very specific:

    Use its docs references and matching connector-documentation XML, not a product name, old native handler, or guessed OAuth scope as API …

    line 15
  4. Distinctive:

    Read the authoring guide for advanced policies.

    line 17
  5. Distinctive:

    If the provider's API or authorization details are unavailable, mark that capability unsupported instead of inventing an endpoint, scope, …

    line 22
  6. Very specific:

    Create .github/workflows/connectors/<id>.md with connectors.<id> and ordinary import-schema.

    line 27
  7. Distinctive:

    Keep merge keys before explicit overrides and verify nested aliases with the actual compiler and bundled runtime, not only a generic YAML …

    line 49
  8. Very specific:

    Use token, scoped github-app, or audience-bound github-oidc only when that route is valid for the actual provider.

    line 51
  9. Very specific:

    Use body-plain-compact only for APIs whose documented representation collapses consecutive ASCII spaces and newlines, so exact echoed-text …

    line 65
  10. Very specific:

    Do not add per-provider runtime code, checkout/build/install hooks, dynamic URLs/queries/scripts, automatic pagination, arbitrary patches, …

    line 68
  11. Very specific:

    Create a minimal consumer with normal uses/with, workflow_dispatch, explicit network approval, one reader and one staged: true, max: 1 …

    line 87
  12. Distinctive:

    Update the human connector reference with honest setup and evidence limits.

    line 97
  13. Distinctive:

    Use a connector-capable compiler and the matching bundled runtime:

    line 101
  14. Distinctive:

    Add tests for import-only/no capability, phase pruning, exact native selection, invalid arguments/grants before credentials, wrong response …

    line 120
  15. Very specific:

    Check local/pinned imports, extracted XML examples, and deployment file closure.

    line 125
  16. Very specific:

    Run make compile-cli-workflows for the golden matrix and follow the developer gates for code changes.

    line 126

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Create a Connector

Use this skill when adding a provider or extending its declarative capabilities. For consumption/setup only, use the connector guide.

Load the contract, not a catalog

Read the connector specification and only the closest declaration in .github/workflows/connectors/. Use its docs references and matching connector-documentation XML, not a product name, old native handler, or guessed OAuth scope as API evidence. Read the authoring guide for advanced policies. No remote skill discovery is needed.

Confirm one useful consumer scenario, exact authorized resources, needed read evidence, desired effect, credential route, and any trigger evidence. If the provider's API or authorization details are unavailable, mark that capability unsupported instead of inventing an endpoint, scope, or tool.

Create the smallest source

Create .github/workflows/connectors/<id>.md with connectors.<id> and ordinary import-schema. Start from section 9 of the specification or the closest existing provider. Its synthetic API is an offline shape example, never a real provider or live-test target.

NeedDeclare
Bounded REST/fixed GraphQL readtools.<read> with exact tool, typed inputs, fixed request, minimal checked projection.
Hosted streamable-HTTP MCP readmcp-servers.<registration> with fixed URL, readOnly: true, exact native tools schemas and grants.
Provider mutationsafe-outputs.<operation> with a distinct safe-output credential and exact resource checks.
Native eventtriggers.<name> with fixed resourceOrigins, verification profile, evidence predicates, normalization and grants; no ingress deployment.
Resource content/contextA selected reader. Do not add public context or automatic hydration.

Set experimental: true for a new unproven contract. Add literal official HTTPS docs URLs actually consulted. Expose resource arrays and secret NAMES through import-schema; tokens never belong in with, source, or prompts. Describe every import binding and give resource arrays explicit string item types. Put declaration metadata, endpoints, credentials, resources, triggers, readers, hosted MCP registrations, and safe outputs in that order. Put input type/required before its constraints. Reuse provider-local anchors for identical primitive schemas without combining independent grants or credential phases. Preserve quoted import substitutions and define anchors before their aliases. Keep merge keys before explicit overrides and verify nested aliases with the actual compiler and bundled runtime, not only a generic YAML parser. Use token, scoped github-app, or audience-bound github-oidc only when that route is valid for the actual provider. Neither GitHub route exchanges tokens.

Bound every string and response. Request placeholders take safe individual segments. New local readers use kebab-case selectors and unprefixed snake_case tool names; preserve existing advertised names and exact hosted native MCP names rather than renaming them for style. Query/body values use input, literal, object, or array. Resource inputs are required strings checked against exact grants before secrets. Correlate the returned ID with the requested ID, not merely some allowed ID. Reject partial pages when completeness matters. Project only needed evidence. Mark human text with sanitize: title/body; use body-plain for literal API text or ADF text nodes so publisher markup is not sent as content. Both body formats retain protected attribution and sizing. Do not sanitize IDs as body text. Use body-plain-compact only for APIs whose documented representation collapses consecutive ASCII spaces and newlines, so exact echoed-text checks stay intact.

Do not add per-provider runtime code, checkout/build/install hooks, dynamic URLs/queries/scripts, automatic pagination, arbitrary patches, credential fallbacks, or grants derived from responses. If the shared contract cannot express a required behavior, report the gap; extend reusable infrastructure only when the task explicitly includes that implementation.

Supply a complete consumer and documentation

Enclose the entire Markdown body in one XML/HTML comment containing a matching connector-documentation XML block with purpose, acquisition/renewal instructions, phase credential names/scopes, input/grant contracts, evidence/privacy limits, and complete consumer YAML/prompt elements. Never include secret values or double-hyphen sequences or nested comments. Do not embed Markdown frontmatter delimiters inside it or leave usage instructions outside the comment: the body is otherwise a system prompt. Full-source security scans still apply; do not add exemptions for documentation. Keep credential-format details in import input metadata and reference the inputs from the comment. Documentation is stripped from prompts, not executed as setup.

Create a minimal consumer with normal uses/with, workflow_dispatch, explicit network approval, one reader and one staged: true, max: 1 effect. For HTTP MCP prefer {registration: [exactNativeTool]} over the whole profile. Specimen grants must match in YAML and prompt. Say what the read does NOT prove and never claim staged delivery. Importing alone must select nothing.

In this repository, add a source-only fixture to pkg/cli/workflows/<id>-golden.md, following the existing golden harness. Wire the new fixture into its provider scenario/CLI compilation matrix; do not install goldens under .github/workflows/ or commit fixture lock files. Update the human connector reference with honest setup and evidence limits.

Validate offline first

Use a connector-capable compiler and the matching bundled runtime:

gh aw connector <id> setup --file .github/workflows/connectors/<id>.md
gh aw compile <consumer> --strict --no-emit
gh aw connector <id> test --phase safe-output --capability <operation> \
  --file .github/workflows/connectors/<id>.md \
  --input 'resources=["approved-id"]' \
  --args '{"resource-id":"approved-id","text":"Offline conformance example"}' \
  --node-runtime actions/setup/js/connector_runtime.cjs

The last command is a shape illustration: replace input, argument, and operation names with the actual declaration's schema. --input name=JSON binds an import input; --grant collection=JSON-array replaces a declared resource grant. Annotated safe-output text requires the matching Node runtime and dependencies. Setup and safe-output tests read no credentials and perform no provider writes. An agent-phase test DOES contact the provider; do not run it as offline validation.

Add tests for import-only/no capability, phase pruning, exact native selection, invalid arguments/grants before credentials, wrong response identity/types, staging with zero secret/HTTP accesses, publication bounds, and Go/Node parity. For supported triggers, add complete/nonmatching native fixtures and frozen predicate parity; projection must report operational: false. Check local/pinned imports, extracted XML examples, and deployment file closure. Run make compile-cli-workflows for the golden matrix and follow the developer gates for code changes.

Report source, scenario, exposed methods/effect, declared credential routes, offline evidence, and unsupported behavior. Do not claim consent, receiver enrollment, token validity, provider delivery, or useful output quality from a compile or mock. Live execution requires the debugging gates, explicit effect scope, and exact reviewed published revision. Stop on authorization denial.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.