Skip to content
Development
Command

/apollo-tasks

**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase

From plugin
ios-workflow-claude
722 skills3 agents22 commands
Install
$ npx -y skills add carloshpdoc/ios-workflow-claude --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/apollo-tasks

Context preview

What this command does when you run it.

**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase

Command definition

apollo-tasks.md

Create Apollo Migration Jira Tasks

> **Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase search for flag/font files), or ask if they cannot be inferred. This plugin ships no per-project config.

Create Jira tasks for Apollo GraphQL migration repositories.

Usage

/apollo-tasks <RepoName1> <RepoName2> ...

Or without arguments to use the recommended next repositories from `/apollo-status`.

Arguments

  • `$ARGUMENTS` - Space-separated list of repository names to create tasks for (optional)

Jira Configuration

  • **Project:** <JIRA_KEY>
  • **Cloud ID:** <jira-cloud-id>
  • **Epic:** <JIRA_KEY>-XXXX (Apollo Removal)
  • **Labels:** apollo-removal, tech-debt
  • **Assignee:** <jira-assignee-id> (current user)
  • **Sprint field:** customfield_10020

Steps

1. Get Repository List

If `$ARGUMENTS` is provided, parse the space-separated repository names.

If no arguments, run `/apollo-status` logic to get the recommended next 5 repositories from `docs/apollo-migration-status.md`.

2. Gather Repository Details

For each repository, search the codebase to find:

  • **Location:** The directory path (e.g., `<scheme>/Repositories/<RepoName>/`)
  • **Consumers:** Files that import/use the repository (ViewModels, Factories, Builders)
  • **Tier:** Complexity tier (1=simple, 2=medium, 3=complex) based on number of queries/mutations

3. Find Current Sprint

Use `mcp__claude_ai_Atlassian__getJiraIssue` to get an existing Apollo task (e.g., <JIRA_KEY>-XXXX) and extract the active sprint ID from `customfield_10020`.

4. Create Jira Tasks

For each repository, use `mcp__claude_ai_Atlassian__createJiraIssue` with:

cloudId: <jira-cloud-id>
projectKey: <JIRA_KEY>
issueTypeName: Task
summary: [APOLLO] Migrate <RepoName> repository to GraphQLClientProtocol
contentFormat: markdown
assignee_account_id: <jira-assignee-id>
additional_fields: {"labels": ["apollo-removal", "tech-debt"]}
description: |
  ## Overview
  Migrate Network<RepoName>Repository from Apollo to GraphQLClientProtocol.

  ## Tier
  <tier> (<complexity description>)

  ## Location
  `<location>`

  ## Consumers (<count>)
  - <Consumer1>
  - <Consumer2>
  ...

  ## Tasks
  - Create Query file
  - Create DataSource file
  - Create Response/Mapper files
  - Create Factory file
  - Update <count> consumers to use factory pattern
  - Write unit tests (mock, repository tests, ViewModel tests)
  - Delete old Apollo files (.graphql, .graphql.swift, Network*Repository.swift)
  - Build and verify
  - Run tests and verify

  ## Acceptance Criteria
  - All consumers use the new factory pattern
  - Unit tests pass
  - No Apollo dependencies remain in this repository

5. Assign to Epic

For each created task, use `mcp__claude_ai_Atlassian__editJiraIssue` to set the parent:

cloudId: <jira-cloud-id>
issueIdOrKey: <created task key>
fields: {"parent": {"key": "<JIRA_KEY>-XXXX"}}

6. Move to Current Sprint

For each created task, use `mcp__claude_ai_Atlassian__editJiraIssue` to set the sprint:

cloudId: <jira-cloud-id>
issueIdOrKey: <created task key>
fields: {"customfield_10020": <sprint_id>}

7. Display Summary

Show a table of created tasks:

## Created Jira Tasks

| Key | Repository | Consumers | Sprint | Epic |
|-----|------------|-----------|--------|------|
| <JIRA_KEY>-XXXX | RepoName | N | Sprint XX | Apollo Removal |
...

All tasks assigned to: <user name>

Notes

  • Run all Jira API calls in parallel where possible (e.g., create all tasks at once, then update all at once)
  • If a task already exists for a repository, skip it and notify the user
  • The epic <JIRA_KEY>-XXXX and sprint field customfield_10020 are specific to this Jira instance
Read more
Ships withios-workflow-claude

Reusable Claude Code slash-commands, skills, and workflows extracted from real iOS / backend projects. Packaged as three installable plugins - register the marketplace and /plugin install what you need.

Get the whole plugin, auto-invoked
Stats
7
Stars
0
Views
1
Forks
Maintained
Maintenance
Shell
Language
Apache-2.0
License
2mo ago
Last commit
2mo ago
Created

Repo: carloshpdoc/ios-workflow-claude