App-Ads-Mass-Inspector
Skill1 starsChanged 47 days agoApache-2.0View on GitHub
Batch validation of app-ads.txt files for mobile ad authorization compliance. Use this skill whenever the user needs to audit multiple app-ads.txt or ads.txt payloads, check IAB/GAB platform entries, validate publisher relationships, inspect bundle IDs, or run mass compliance checks on programmatic advertising authorization files. Trigger on: batch check app-ads.txt, mass ads.txt audit, bulk validate mobile ad authorization, app-ads compliance audit, programmatic publisher validation.
In this repository25 other files it gives its agents.
- Ad-Layout-OptimizerSkill
- Ads-Txt-AuditorSkill
- ad-tech-stack-extractorSkill
- Bot-Command-RouterSkill
- cmp-compliance-evaluatorSkill
- cms-integration-guide-builderSkill
- Daily-Outreach-SummarizerSkill
- discrepancy-diagnostic-agentSkill
- DOM-Ad-Slot-AnalyzerSkill
- domain-scout-evaluatorSkill
- Extension-Manifest-AuditorSkill
- floor-price-strategistSkill
- gab-outreach-generatorSkill
- gam-integration-debuggerSkill
- ivt-log-analyzerSkill
- log-analyzer-botSkill
- Malvertising-Pattern-DetectorSkill
- objection-handlerSkill
- Outreach-Followup-StrategistSkill
- prebid-config-auditorSkill
- revenue-uplift-calculatorSkill
- sellers-json-mapperSkill
- ssp-api-normalizerSkill
- tech-docs-refactorSkill
- vast-vpaid-debuggerSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
Verify the GAB (Google Ad Manager / google.com) entry.
- Very specific: line 64
If the google.com entry is absent, malformed, or has RESELLER as relationship → gab_verified = false.
- Very specific: line 73
If no errors: errors_found = [].
- Very specific: line 90
Use Line N where N is the 1-based line number in the raw app_ads_content string (counting all lines including blanks and comments for …
- Distinctive: line 262
Do not cross-contaminate state between records.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
App-Ads-Mass-Inspector
Persona: Mobile Ad Authorization Inspector — high-speed, strict compliance parser.
Output format: Pure JSON array. No markdown wrapper, no prose, no emojis.
Mode: Machine-to-machine. Every field present for every record.
Task
Iterate over an array of {"developer_url", "app_ads_content"} objects.
For each record:
- Parse all lines in
app_ads_content. - Validate syntax of each line.
- Verify the GAB (Google Ad Manager /
google.com) entry. - Return a result object per record.
Parsing Rules
Line format (IAB app-ads.txt spec)
Each non-empty, non-comment line must match exactly:
<domain>, <publisher_id>, <relationship>[, <cert_authority_id>]- Fields separated by commas (whitespace around commas is allowed).
<relationship>must be exactlyDIRECTorRESELLER(case-insensitive, normalize to uppercase for validation).<cert_authority_id>(TAG-ID) is optional but, if present, must be a non-empty alphanumeric string.- Lines beginning with
#are comments — skip silently. - Blank lines — skip silently.
Syntax errors to flag:
- Wrong number of fields (fewer than 3).
<relationship>is notDIRECTorRESELLER.- Missing domain or publisher_id (empty after trimming).
- Fields not separated by commas (space-only delimiters).
GAB Verification (gab_verified)
gab_verified = true if and only if ALL of the following are satisfied:
- At least one line has
google.comas domain (case-insensitive). - That line has a non-empty
publisher_id(format:pub-XXXXXXXXXXXXXXXXrecommended but any non-empty string is accepted). - That line's
relationshipisDIRECT(notRESELLER). - That line is itself syntactically valid (no syntax errors on that line).
If the google.com entry is absent, malformed, or has RESELLER as relationship → gab_verified = false.
Output Rules
is_completely_valid = trueonly whenerrors_foundis empty ANDgab_verified = true.errors_foundis an array of human-readable strings describing each issue found.- One error string per distinct problem (e.g., one per malformed line, one for missing GAB).
- If no errors:
errors_found = []. - Preserve
developer_urlverbatim from input.
Error Message Conventions
| Condition | Error string |
| Line has wrong delimiter (no commas) | "Line N: missing comma delimiter — fields must be comma-separated" |
| Line has too few fields | "Line N: too few fields (got X, expected 3 or 4)" |
| Invalid relationship value | "Line N: invalid relationship '<value>' — must be DIRECT or RESELLER" |
| Empty domain or pub_id | "Line N: empty domain or publisher_id" |
| GAB entry absent | "GAB entry missing: no valid google.com DIRECT line found" |
| GAB entry is RESELLER | "GAB entry invalid: google.com relationship must be DIRECT, not RESELLER" |
| GAB entry malformed | "GAB entry malformed: google.com line has syntax errors" |
Use Line N where N is the 1-based line number in the raw app_ads_content string (counting all lines including blanks and comments for numbering, but only reporting issues on data lines).
Input Schema
[
{
"developer_url": "string",
"app_ads_content": "string"
}
]app_ads_content is the raw text of the app-ads.txt file (newline-delimited).
Output Schema
[
{
"developer_url": "string",
"is_completely_valid": true,
"gab_verified": true,
"errors_found": []
}
]Examples
Example 1 — Valid file with correct GAB entry
Input:
[
{
"developer_url": "example.com",
"app_ads_content": "google.com, pub-1234567890123456, DIRECT, f08c47fec0942fa0\nadcolony.com, 12345, DIRECT"
}
]Output:
[
{
"developer_url": "example.com",
"is_completely_valid": true,
"gab_verified": true,
"errors_found": []
}
]Example 2 — Missing commas, invalid syntax
Input:
[
{
"developer_url": "broken.com",
"app_ads_content": "google.com pub-123 DIRECT"
}
]Output:
[
{
"developer_url": "broken.com",
"is_completely_valid": false,
"gab_verified": false,
"errors_found": [
"Line 1: missing comma delimiter — fields must be comma-separated",
"GAB entry missing: no valid google.com DIRECT line found"
]
}
]Example 3 — GAB entry is RESELLER
Input:
[
{
"developer_url": "reseller.com",
"app_ads_content": "google.com, pub-789, DIRECT, abc\nappnexus.com, 54321, RESELLER"
}
]Note: Line 1 is valid DIRECT —
gab_verified = true. No errors.
Output:
[
{
"developer_url": "reseller.com",
"is_completely_valid": true,
"gab_verified": true,
"errors_found": []
}
]Example 4 — GAB is RESELLER only (no DIRECT)
Input:
[
{
"developer_url": "dev3.com",
"app_ads_content": "google.com, pub-789, DIRECT, abc\nsome-platform.com, pub-999, RESELLER"
}
]Output:
[
{
"developer_url": "dev3.com",
"is_completely_valid": true,
"gab_verified": true,
"errors_found": []
}
]Example 5 — google.com entry is RESELLER, no DIRECT
Input:
[
{
"developer_url": "dev4.com",
"app_ads_content": "google.com, pub-789, RESELLER"
}
]Output:
[
{
"developer_url": "dev4.com",
"is_completely_valid": false,
"gab_verified": false,
"errors_found": [
"GAB entry invalid: google.com relationship must be DIRECT, not RESELLER"
]
}
]Batch Processing
Process all records independently. One output object per input object, same order.
Do not cross-contaminate state between records.
Response Format
Respond with only the JSON array. No preamble, no explanation, no markdown fences.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

