Borrowing it
Nothing to install: this file belongs to duceum/appstore-ppp-pricing-agent-skill. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/duceum/appstore-ppp-pricing-agent-skill/main/CLAUDE.mdgit clone --depth 1 https://github.com/duceum/appstore-ppp-pricing-agent-skillWrote 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/instructions/duceum/appstore-ppp-pricing-agent-skill/claude-md)<a href="https://agentmods.dev/instructions/duceum/appstore-ppp-pricing-agent-skill/claude-md"><img src="https://agentmods.dev/badge/instructions/duceum/appstore-ppp-pricing-agent-skill/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/duceum/appstore-ppp-pricing-agent-skill/claude-md"><img src="https://agentmods.dev/badge/instructions/duceum/appstore-ppp-pricing-agent-skill/claude-md.svg" alt="Reviewed on agentmods" width="80" 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.01751 | $0.01751 |
| Opus 5 | $0.00875 | $0.00875 |
| Sonnet 5 | $0.00350 | $0.00350 |
| Haiku 4.5 | $0.00175 | $0.00175 |
Grade A, and why
appstore-ppp-pricing-agent-skill CLAUDE.md 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 10d 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 — 106 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md — Project Context for AI Agents
What This Project Does
CLI tool that automates regional pricing for App Store in-app purchases and subscriptions. Distributed on PyPI as appstore-ppp-prices; the module is appstore_ppp_prices and it installs two equivalent commands, appstore-ppp-prices and the shorter ppp-pricing. Calculates optimal prices for 175+ countries based on GDP per capita and optionally uses GPT to adjust coefficients per app type.
Tech Stack
- Python 3.10+
- httpx — HTTP client for App Store Connect API
- PyJWT — JWT token generation for API auth
- openai — GPT integration for pricing analysis
- python-dotenv — .env config loading
Architecture
appstore_ppp_prices/ — the installable package (importable as appstore_ppp_prices)
cli.py — Entry point, argument parsing, orchestration
appstore.py — App Store Connect API client (JWT auth, products, prices)
pipeline.py — Core workflow: find product → AI analysis → calculate → resolve → apply
pricing.py — Pure pricing logic: coefficients × US price → target prices
countries.py — Country data loader from CSV (GDP, categories, coefficients)
ai_analyzer.py — Prompt template, response parsing, caching, cache clearing
llm.py — OpenAI-compatible chat-completions client: retries, timeouts, provider override
display.py — Terminal output formatting, dry-run tables
paths.py — Config and cache directory resolution
countries.csv — 175+ countries with GDP per capita and default coefficients (shipped as package data)
.env — Secrets (not committed)
.env.example — Template for .env
Never anchor runtime paths to Path(__file__).parent.parent — in an installed
wheel that resolves to site-packages, not the repository. Data files go through
importlib.resources; writable state goes through paths.py.
Key Patterns
- Business logic is pure:
pricing.pyhas no I/O, no side effects - API client is stateful:
AppStoreConnectClientmanages JWT token lifecycle with thread-safe locking - Context manager:
AppStoreConnectClientsupportswith client:pattern - Concurrent API calls:
ThreadPoolExecutorfor price-point batches and subscription price setting. Territory price grids are batched 8 territories per request (the endpoint serves 8000 rows a page), so 175 territories cost ~22 calls, not 175 - No vendor SDK: the LLM call is a plain httpx POST in
llm.py, so any OpenAI-compatible endpoint works (OpenRouter, Groq, Ollama, vLLM) and nothing in the dependency tree needs compiling. Retries live there — 429/5xx/timeouts, three attempts, 1s then 2s backoff; 4xx fails immediately - AI caching: Results cached in
~/.cache/ppp-pricing/($XDG_CACHE_HOMEhonoured) by SHA-256 hash of app name;--clear-cacheremoves all cached results - Config discovery:
--config→$PPP_PRICING_CONFIG→ nearest ancestor of cwd holding a.env→~/.config/ppp-pricing/. The first two are authoritative: a wrong explicit path fails loudly instead of silently falling back.load_dotenvis only ever called with an explicit path — never withNone, which would make python-dotenv search upwards and override the chosen directory - IAP vs Subscription: Different API endpoints and flows — IAPs use single atomic request, subscriptions need per-territory POST + pending price cleanup
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.
- 10d ago First seen · 106 lines · 1,751 tokens per session scan A 0ef120bbd963
appstore-ppp-pricing-agent-skill CLAUDE.md is an instructions file published in the GitHub repository duceum/appstore-ppp-pricing-agent-skill (46 stars, last pushed 18d ago), licensed MIT. It adds 1,751 tokens to every session, about $0.0088 per session on Opus 5. 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-30.
Other instructions, from other repositories
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
deepseek-harness AGENTS.md
AGENTS.md instructions for deepseek-ai/deepseek-harness, covering agents.md, pre-stable apis and released session data, repository layout, commands and host sandbox failures.