
Github Issues
Wire GitHub issue blocked-by and blocking relationships through REST or GraphQL when MCP does not expose dependency APIs.
Install
npx skills add https://github.com/ilteoood/harness --skill github-issuesWhat is this skill?
- Documents REST endpoints for list, add, and remove blocked_by dependencies
- Documents GraphQL queries for blockedBy, blocking, and issueDependenciesSummary
- Documents GraphQL mutations addBlockedBy and removeBlockedBy with issue node IDs
- Clarifies issue numeric ID versus issue number for REST POST bodies
- Explicitly notes no MCP tools for dependencies—direct API calls only
Adoption & trust: 1 installs on skills.sh; 2 GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Triagemattpocock/skills
Caveman Commitjuliusbrussee/caveman
Using Git Worktreesobra/superpowers
Finishing A Development Branchobra/superpowers
Git Commitgithub/awesome-copilot
Git Guardrails Claude Codemattpocock/skills
Journey fit
Common Questions / FAQ
Is Github Issues safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Github Issues
# Issue Dependencies (Blocked By / Blocking) Dependencies let you mark that an issue is blocked by another issue. This creates a formal dependency relationship visible in the UI and trackable via API. No MCP tools exist for dependencies; use REST or GraphQL directly. ## Using REST API **List issues blocking this issue:** ``` GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by ``` **Add a blocking dependency:** ``` POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by Body: { "issue_id": 12345 } ``` The `issue_id` is the numeric issue **ID** (not the issue number). **Remove a blocking dependency:** ``` DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id} ``` ## Using GraphQL **Read dependencies:** ```graphql { repository(owner: "OWNER", name: "REPO") { issue(number: 123) { blockedBy(first: 10) { nodes { number title state } } blocking(first: 10) { nodes { number title state } } issueDependenciesSummary { blockedBy blocking totalBlockedBy totalBlocking } } } } ``` **Add a dependency:** ```graphql mutation { addBlockedBy(input: { issueId: "BLOCKED_ISSUE_NODE_ID" blockingIssueId: "BLOCKING_ISSUE_NODE_ID" }) { blockingIssue { number title } } } ``` **Remove a dependency:** ```graphql mutation { removeBlockedBy(input: { issueId: "BLOCKED_ISSUE_NODE_ID" blockingIssueId: "BLOCKING_ISSUE_NODE_ID" }) { blockingIssue { number title } } } ``` ## Tracked issues (read-only) Task-list tracking relationships are available via GraphQL as read-only fields: - `trackedIssues(first: N)` - issues tracked in this issue's task list - `trackedInIssues(first: N)` - issues whose task lists reference this issue These are set automatically when issues are referenced in task lists (`- [ ] #123`). There are no mutations to manage them. # Images in Issues and Comments How to embed images in GitHub issue bodies and comments programmatically via the CLI. ## Methods (ranked by reliability) ### 1. GitHub Contents API (recommended for private repos) Push image files to a branch in the same repo, then reference them with a URL that works for authenticated viewers. **Step 1: Create a branch** ```bash # Get the SHA of the default branch SHA=$(gh api repos/{owner}/{repo}/git/ref/heads/main --jq '.object.sha') # Create a new branch gh api repos/{owner}/{repo}/git/refs -X POST \ -f ref="refs/heads/{username}/images" \ -f sha="$SHA" ``` **Step 2: Upload images via Contents API** ```bash # Base64-encode the image and upload BASE64=$(base64 -i /path/to/image.png) gh api repos/{owner}/{repo}/contents/docs/images/my-image.png \ -X PUT \ -f message="Add image" \ -f content="$BASE64" \ -f branch="{username}/images" \ --jq '.content.path' ``` Repeat for each image. The Contents API creates a commit per file. **Step 3: Reference in markdown** ```markdown  ``` > **Important:** Use `github.com/{owner}/{repo}/raw/{branch}/{path}` format, NOT `raw.githubusercontent.com`. The `raw.githubusercontent.com` URLs return 404 for private repos. The `github.com/.../raw/...` format works because the browser sends auth cookies when the viewer is logged in and has repo access. **Pros:** Works for any repo the viewer has access to, images live in version control, no expiration. **Cons:** Creates commits, viewers must be authenticated, images won't render in email notifications or for users without repo access. ### 2. Gist hosting (public images only) Upload images as files in a gist. Only works for images you're comfortable making public. ```bash # Create a gist with a placeholder file gh gist create --public -f description.md <<< "Image hosting gist" # Note: gh gist edit does NOT support binary files. # You must use the API to add binary content to gists. ``` > **Limitation:** Gists don't support binary file upload