agentleFS
runxhqrunxhq/runx/skills/github-sync/SKILL.md

github-sync

Skill97 starsChanged 32 days agoApache-2.0View on GitHub

Read or synchronize bounded GitHub issues, threads, and pull requests through the GitHub connector, with scoped authority and readback.

11 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use github-sync when an operator needs a reproducible pull or push contract for issues, pull requests, or threads, especially when cursor …

    line 31
  2. Very specific:

    Do not use a plan as evidence that remote state was read or changed.

    line 40
  3. Distinctive:

    Do not treat local cursor persistence as remote provider readback.

    line 91
  4. Distinctive:

    Do not claim comments, labels, issues, or PRs were read or changed until the native provider operation proves the expected access, …

    line 97

“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “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

GitHub Sync

Define one bounded synchronization between local Runx state and a GitHub repository. The skill makes direction, resource set, filters, content identity, scope, cursor, and authority posture explicit before the selected GitHub instance is allowed to read or mutate GitHub.

The default github-sync runner performs the requested pull or push. plan is the explicit no-effect runner; pull and push remain explicit execution lanes for compatible callers. Pulls are bounded reads. A push carries one to eight typed mutations that one GitHub operation applies, and returns each item's outcome. It closes only on an independent GitHub readback of every applied item. An item whose outcome is unknown holds the push for reconciliation and is never silently retried. No GitHub token enters this package.

Composes

<!-- Generated from the native execution closure; run pnpm core-skills:composes:generate. -->
  • data-store#append_event
  • data-store#read_projection

When to use it

Use github-sync when an operator needs a reproducible pull or push contract for issues, pull requests, or threads, especially when cursor state must survive across runs. Use plan only when the requested outcome is a plan. Use pull for an explicitly selected read lane. Use push for already-decided issue, pull-request, or comment changes of one kind. Batches are bounded and best-effort, not atomic: a refused item does not stop the rest, the result identifies each item, and the operator reconciles before retrying. Use issue-triage to decide what an issue means and issue-to-pr to govern an implementation lane.

Do not use a plan as evidence that remote state was read or changed. Only the native runx.provider.operation.v1 result from pull or push is provider evidence. Do not silently turn a denied push into a pull.

How it works

  1. Validate the exact owner/name repository, direction, resource kind, bounded filters, maximum result count, and requested scope.
  2. A pull plan requires read scope and records the exact resources a provider may fetch.
  3. A push plan requires write scope and one to eight typed mutations that one GitHub operation applies: issues.create, issues.update, pullrequests.update, comments.create, or comments.update. It rejects unknown fields, oversized content, and mixed kinds, then returns ready_for_execution; planning itself does not grant provider authority.
  4. Optional plan_and_append_cursor composes the canonical data-store skill to append the bounded plan and read the projection back. That proves local cursor persistence, not GitHub synchronization; this package does not own a second cursor database or storage adapter.
  5. The default runner selects the same bounded read or write path from the validated direction. pull calls the planned read (issues.list, issues.read, pullrequests.list, pullrequests.read, or comments.list) with repo.read. push calls the planned write once under repo.write: the runtime sends each item, records each outcome, and reads every applied item back before the push closes. Both run under the GitHub instance selected here: the signed-in gh session or a stored token.

Inputs and result

  • repo is exactly owner/name.
  • direction is pull or push.
  • resources contains the issue, PR, thread, or batch selector and a limit no greater than 100. A push has one to eight mutations entries with ref, op, and an exact typed payload. Issue and PR changes use op: update; a new issue uses ref: issues and op: create; new thread comments use op: comment. Bodies are capped at 65,536 characters. Pulls return GitHub's records whole.
  • scope is the requested read or write scope.

The runx.github_sync.v1 plan records exact direction, provider operation, scope, filters, blockers, authority posture, cursor state when used, and the explicit absence of remote effects. Execution additionally emits the native provider-operation packet; it does not rewrite the planning packet to imply a remote effect.

Stop conditions

  • Refuse malformed repositories, unknown resource kinds, unbounded selectors, limits above the contract, more than eight mutations, unknown mutation fields, or content beyond the declared bounds.
  • Refuse push when write scope is missing; do not degrade silently.
  • Do not treat local cursor persistence as remote provider readback.
  • Refuse a push that mixes new issues, issue, pull-request, and comment changes; send each kind as its own push.
  • Refuse when no GitHub instance is selected, or the selected one lacks the scope. Never treat an available instance as evidence of the intended repository.
  • Do not claim comments, labels, issues, or PRs were read or changed until the native provider operation proves the expected access, operation, and readback.

Example

A caller wants to pull the next 50 open issues after cursor 2. Planning can persist that cursor locally; pull then performs issues.list through the selected instance and returns the provider result. To close issue 241, a push carries ref: issues/241, op: update, and payload: {state: closed, state_reason: completed}. Runx applies only that issue update through issues.update under repo.write, and reads issue 241 back.

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.