Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/carloshpdoc/ios-workflow-claudeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/carloshpdoc/ios-workflow-claude/apollo-tasks)<a href="https://agentmods.dev/commands/carloshpdoc/ios-workflow-claude/apollo-tasks"><img src="https://agentmods.dev/badge/commands/carloshpdoc/ios-workflow-claude/apollo-tasks.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01038 |
| Opus 5 | $0.00000 | $0.00519 |
| Sonnet 5 | $0.00000 | $0.00208 |
| Haiku 4.5 | $0.00000 | $0.00104 |
Grade A, and why
apollo-tasks scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
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 -jsonfor the scheme,git/ghfor 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:
- Epic: <JIRA_KEY>-XXXX (Apollo Removal)
- Labels: apollo-removal, tech-debt
- Assignee: (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
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 131 lines · 0 tokens per session scan A 29178a196ab5
apollo-tasks is a command published in the GitHub repository carloshpdoc/ios-workflow-claude (7 stars, last pushed 3mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,038 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
ijfw-status
Show IJFW state -- mode, routing, memory, recent activity, codebase index, settings. Use when you want the at-a-glance banner you'd otherwise get at session start.
speckit.companion.implement
Companion implement — execute tasks.md in dependency order, then mark complete.
speckit.companion.living-move
Move a living spec between central and colocated storage — file, tiers, and registry together (opt-in, reversible).
speckit.companion.after-specify
Capture the current spec-kit step into .spec-context.json for the Companion GUI.
status
The state of play, computed fresh: branch, dirty files, the active sprint, open work, index freshness.
camp-init
Create a new camp with the standard directory structure. A camp was previously called a campaign; camp init is the same command either way.