.claude/skills/github-ops/SKILL.md
Workflow for repository reconnaissance and operations using GitHub CLI (gh). Optimizes token usage by using structured API queries instead of blind file fetching.
npx skillsauth add oimiragieo/agent-studio github-opsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides structured guidance for repository reconnaissance using gh api and gh search.
Repository reconnaissance often fails when agents guess file paths or attempt to fetch large files blindly. This skill enforces a structured Map -> Identify -> Fetch sequence using the GitHub CLI to minimize token waste and improve reliability.
Use these commands to understand a repository structure before fetching content.
gh api repos/{owner}/{repo}/contents --jq '.[].name'
gh api repos/{owner}/{repo}/contents/{path} --jq '.[].name'
gh api repos/{owner}/{repo}/contents/{path} --jq '.content' | base64 -d
gh search code "{pattern}" --repo {owner}/{repo}
gh repo view {owner}/{repo} --json description,stargazerCount,updatedAt
commands, src, docs).README.md, gemini-extension.json, package.json, or SKILL.md.gh search code to find logic patterns rather than reading every file.base64 -d, ensure the output is redirected to a file using the Write tool if it's large./dev/stdin patterns in complex pipes.gh api — large files fetched unnecessarily can exhaust the context window.--jq to filter gh api JSON output to only the fields needed — unfiltered API responses contain hundreds of irrelevant fields that inflate token usage.gh search code without a scoping qualifier (repo, org, or path) — unscoped code search returns results from all of GitHub, producing irrelevant noise.gh api structured queries over reading repository files directly when repository metadata is needed — API queries are faster, structured, and don't require authentication context for public repos.| Anti-Pattern | Why It Fails | Correct Approach |
| ---------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Guessing file paths and fetching them directly | High 404 rate; wasted tokens on non-existent paths | Map root tree first: gh api repos/{owner}/{repo}/git/trees/HEAD --jq '.tree[].path' |
| Fetching entire files for a single field | Large files exhaust context; slow and imprecise | Use --jq to extract only the required field from API response |
| Unscoped gh search code queries | Returns GitHub-wide results; noise overwhelms signal | Always add --repo owner/name or --owner org scope qualifier |
| Reading binary or generated files | Binary content is unreadable; generated files change frequently | Identify file type first; skip binaries; read source files only |
| Sequential API calls for each file | Unnecessary round-trips inflate latency | Batch: use gh api trees or search to identify multiple targets, then fetch in parallel |
When the official GitHub MCP server (@modelcontextprotocol/server-github) is configured, use these higher-level tools for repository management and automation:
// settings.json configuration
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" }
}
# Create PR with auto-generated description
gh pr create \
--title "feat: add feature X" \
--body "$(gh api repos/{owner}/{repo}/compare/{base}...{head} --jq '.commits[].commit.message' | head -5)" \
--base main \
--head feature/x
# Auto-merge after CI passes
gh pr merge --auto --squash --delete-branch
# List open issues by label
gh issue list --label "bug" --state open --json number,title,assignees
# Bulk-close resolved issues
gh issue list --label "stale" --json number --jq '.[].number' | \
xargs -I{} gh issue close {} --comment "Closing as stale"
# Create issue from template
gh issue create \
--title "Bug: [description]" \
--body-file .github/ISSUE_TEMPLATE/bug_report.md \
--label "bug,needs-triage"
# Create release with auto-generated notes
gh release create v1.2.0 \
--generate-notes \
--title "v1.2.0" \
--target main
# Upload release assets
gh release upload v1.2.0 dist/*.tar.gz dist/*.zip
# Trigger workflow manually
gh workflow run deploy.yml --field environment=production
# Watch workflow run
gh run watch $(gh run list --workflow=deploy.yml --limit=1 --json databaseId --jq '.[0].databaseId')
# Download workflow artifacts
gh run download --name=build-artifacts --dir=./artifacts
Before starting:
Read .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.
tools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.