Use when a developer needs to gather their work history for a resume update, performance review, or promotion packet. Aggregates contributions from GitHub and Jira via parallel subagents, then synthesizes into resume-ready bullets.
Gather your contributions from GitHub and Jira, then synthesize into resume-ready bullets.
gh CLI installed and authenticated (gh auth status)resume-ops.yaml config file in your project root or ~/.config/resume-ops/resume-ops.yamlSearch for resume-ops.yaml in this order:
~/.config/resume-ops/resume-ops.yamlIf not found, tell the user:
"No resume-ops.yaml found. Copy to your project root or and fill in your details."
resume-ops.yaml.example~/.config/resume-ops/Read the config file. Remember the resolved path for later use (Step 7). Validate that required fields are present:
user.nameuser.github_usernameenabled: trueuser.target_role or role_history is missing — these improve synthesis qualityIf sources.github.enabled is true:
gh auth status
If this fails, tell the user to run gh auth login first.
If sources.jira.enabled is true:
mkdir -p resume-ops-output/raw
Launch subagents in parallel using the Agent tool. For each enabled source, spawn one agent.
GitHub Agent (if sources.github.enabled):
Read the file agents/github.md from the resume-ops skill directory. Replace all {{template_vars}} with values from resume-ops.yaml:
{{github_username}} → user.github_username{{orgs}} → sources.github.orgs (as comma-separated list){{since}} → sources.github.since{{include_reviews}} → sources.github.include_reviews{{exclude_repos}} → sources.github.exclude_repos (as comma-separated list)Dispatch with the Agent tool:
Agent(
description: "Gather GitHub contributions",
subagent_type: "general-purpose",
prompt: [filled github.md template]
)
Jira Agent (if sources.jira.enabled):
Read the file agents/jira.md from the resume-ops skill directory. Replace all {{template_vars}}:
{{assignee}} → sources.jira.assignee{{project_keys}} → sources.jira.project_keys (format as comma-separated quoted strings for JQL, e.g., "PLAT", "CDC"){{since}} → sources.github.since (reuse the same date boundary){{ignore_labels}} → sources.jira.ignore_labelsDispatch with the Agent tool:
Agent(
description: "Gather Jira contributions",
subagent_type: "general-purpose",
prompt: [filled jira.md template]
)
IMPORTANT: Launch both agents in a SINGLE message with multiple Agent tool calls so they run in parallel.
After both agents complete, verify output files exist:
ls -la resume-ops-output/raw/
Read each raw file and check it's not empty or error-only. If a source failed:
Read templates/synthesis.md from the resume-ops skill directory. Replace template vars:
{{name}} → user.name{{target_role}} → user.target_role{{role_history}} → formatted role_history from config{{focus_areas}} → synthesis.focus_areas{{highlight_keywords}} → synthesis.highlight_keywords{{max_bullets_per_theme}} → synthesis.max_bullets_per_theme{{team_size}} → synthesis.team_sizeThen read ALL raw data files and follow the synthesis instructions to generate resume-ops-output/resume-bullets.md.
This step runs inline (not as a subagent) so you have full context of the raw data.
Copy the config file that was found in Step 1 (may be in cwd or ~/.config/resume-ops/):
cp [resolved_config_path] resume-ops-output/resume-ops.yaml
Use the actual path where you found the config, not a hardcoded relative path.
Tell the user:
resume-ops complete! Here's what was gathered:
- GitHub: [X merged PRs, Y reviews, Z repos]
- Jira: [X tickets, Y epics, Z critical issues]
Output files:
resume-ops-output/raw/github.md— raw GitHub dataresume-ops-output/raw/jira.md— raw Jira dataresume-ops-output/resume-bullets.md— synthesized resume bulletsNext step: Review
resume-bullets.mdand fill in anyTODOmarkers with specific metrics from your memory or dashboards.
gh auth login