All plugins

DSH / BUNDLE / CLIENT-UI

@goodandready/dsh-github-ops

v0.1.2GooDAnDReaDY / dsh-github-opsf1731ea279

InstallableBundlesUI & client pluginsCommunity · automated checks

Overview

@goodandready/dsh-github-ops

GitHub operations for DeepSeek Harness: releases, tags, a guarded generic API pass-through, workflow runs, secrets and sanitized mirror publication.

README / EN

Package documentation

📦 @goodandready/dsh-github-ops

Advanced GitHub Operations, Releases, CI Runs, Secrets & Sanitized Mirrors for DeepSeek Harness

npm version license DSH Plugin Node version

All Author Projects

🇬🇧 English🇨🇳 中文说明🇷🇺 Русский

If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it.

🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version.

GitHub operations for DeepSeek Harness: releases, tags, a guarded generic API pass-through, workflow runs, secrets and sanitized mirror publication.

The plugin exists because the release pipeline needs operations the existing GitHub plugin does not provide — releases and tags first, then a way to publish a GitHub mirror that carries the product and not the whole development tree.

Status: work in progress, not released. The public release happens only after the plugin carries the full tool set (see Roadmap).

Install

dsh plugin --profile web add @goodandready/dsh-github-ops

Requires a GitHub token in the DSH credential service. Store the token under a name (default GITHUB_TOKEN) and put only that name in the plugin settings.

Settings

Setting Default Meaning
tokenEnv GITHUB_TOKEN Name looked up in the DSH credentials, then the environment, then the gh CLI. The value is never stored in settings.
tokenSource auto Where access comes from: auto tries the DSH credential, then the environment variable, then the gh CLI session; pin it to credentials, env or gh.
defaultRepository (empty) owner/repo used by tools that omit repository.
baseUrl https://api.github.com API base; change it for GitHub Enterprise.
timeoutMs 30000 Per-request timeout.
maxRetries 2 Retries for a failed read (never for a write).
reviewRulesJson (empty) Review-rule overrides as JSON: sensitivePaths, sensitiveSeverity, attentionPaths, migrationPaths, testsRequired, sourcePatterns, testPatterns, largeDiffLines.
reviewJobTimeoutMs 120000 How long a background review job may run.

Tools

Releases

Tool What it does
gh_release_list List releases, newest first (read-only).
gh_release_view Read one release by tag: flags, notes, assets (read-only).
gh_release_create Create a release for a tag, optionally on a specific commit.
gh_release_edit Edit title, notes, draft/prerelease, and which release is latest.
gh_release_delete Delete a release (requires confirm: true).

gh_release_edit with makeLatest: true is the step that keeps the repository badge on the current version: creating older releases afterwards otherwise moves “Latest” back.

Tags

Tool What it does
gh_tag_list List tags with their commit SHAs (read-only).
gh_tag_create Create a tag — lightweight, or annotated when message is given.
gh_tag_delete Delete a tag (requires confirm: true).

Generic API

gh_api reaches anything the typed tools do not cover (refs, rulesets, organizations, gists). Reads are free. POST/PATCH/PUT/DELETE require confirm: true. Deleting a repository, transferring a repository or deleting an organization is refused outright — a single confirmation cannot make those safe.

Issues and pull requests

Tool What it does
gh_issue List or read issues (action: list|get|comments); pull requests come back as kind: "pr".
issue_open, issue_comment, issue_close Create an issue, comment on an issue or PR, close it (optionally with a state reason).
gh_search Search issues and PRs with GitHub search syntax (separate quota).
pr_create, pr_update Open a pull request from a head branch; edit title, body, state or base.
pr_merge Merge a PR (merge/squash/rebase), optionally deleting the head branch.
gh_review One review pack: metadata, areas, capped diff, comments, CI rollup and deterministic findings (secrets, migrations, CI config, source without tests, large diff).
review_post Publish a review as one summary comment, or as line-anchored inline comments.
gh_checks Check runs, legacy statuses and one rollup verdict for a commit.
ci_run One-shot review of a PR with a rule-based verdict.

Mirror publication

Tool What it does
gh_mirror_check Read-only plan: which product files would reach the mirror, how many stay behind, and why a publication must be refused.
gh_mirror_publish Publish the sanitized tree: one commit on top of the mirror branch, fast-forward, never a force. dryRun: true previews; writing needs confirm: true.

The allowlist is the package manifest's own files plus .gitignore, LICENSE, README trio, CHANGELOG.md and cordis.patch.yml. docs/** and agent instructions are forbidden even when a manifest lists them; shipped tooling such as scripts/** is published because it is part of the package.

Workflow runs

Tool What it does
gh_run_list, gh_run_view List runs (branch, workflow, status filters) and read one run.
gh_run_jobs Jobs with their steps, and the steps that failed — usually enough to diagnose a failure.
gh_run_rerun, gh_run_cancel Re-run all or only failed jobs; cancel an in-progress run (needs confirm: true).
gh_run_logs Returns the logs archive URL: GitHub answers with a redirect to a zip, which is not pulled into the conversation.

Repository settings

Tool What it does
gh_variable_list/set/delete Actions variables, repository-wide or per environment.
gh_secret_list/set/delete Actions secrets. Setting one uses sealed-box encryption through the optional tweetnacl package; without it the tool says what to install instead of writing a broken value.
gh_ruleset_list/view/apply/delete Repository rulesets: read, create, update, delete.
gh_branch_protection_get/set/delete Classic branch protection: required reviews, status checks, admin enforcement, force-push and deletion flags.

Background reviews and commands

gh_review_job starts a review and returns a job id immediately; gh_review_job_status reports it. With a host job registry the work is visible and cancellable in the UI; without one it runs inside the plugin.

Slash commands are the fast path for a human:

Command What it does
/pr create [title] Reads the current branch and origin, then instructs the model to call pr_create.
/review [number] Reviews a pull request (or the one for the current branch).
/issue new <title> | /issue list | /issue show <number> Opens, lists or reads issues.
/gh [group|tool] Points at the tools for releases, tags, mirror, runs, secrets, variables, rulesets or branch protection.

A command never writes to GitHub itself: it hands the model an instruction, so the write still passes through the approval gate.

Safety

  • The token lives in the DSH credential service; settings hold only its name.
  • Read operations never change state. A state-changing tool needs an explicit confirm flag, deleting a repository, transferring one or deleting an organization is refused outright, and whether a prompt is shown is the host approval contour — the plugin does not run an approval gate of its own.
  • The client never logs the token, and every failure is reported as a value (ok: false with status, code, rateLimit) instead of an exception.
  • Findings from gh_review are deterministic rules: they point at what needs attention and are never presented as a verdict on correctness.

Roadmap

Everything planned for the first release is implemented. What remains is the release process itself:

  1. Preflight (dsh-plugin-preflight) and the package check.
  2. Verification of the exact .tgz on the isolated DSH test server.
  3. Acceptance of the same candidate on production.
  4. Translation notes for dsh-russian-lang.
  5. Public release (npm + GitHub) after an explicit go-ahead.

Development

npm test        # node --test, no harness and no network: fetch is injected

Tests live next to the code they cover and never touch the network: the transport is a parameter, so failure modes (404, rate limit, timeout, non-JSON body, short pages) are exercised directly.

License

MIT — see LICENSE.

LIMITATIONS

Known limitations

Submitted through a public pull request. Automated checks verified the public bundle contract and committed files, but did not inspect runtime capabilities. This is not a human review, security audit, publisher identity check, or official endorsement.