Vendor Inventory Stinger
Forge status: stages 1-6 complete (Topic, Research, Distillation, References, Guides, final
Skill/Bee authorship). Stage 7 (Register: beekeeper-suit registration and cross-harness deploy)
has not run yet.
Purpose
Equips vendor-inventory-worker-bee, wave W1b of every Website Auditor by Legion Code Inc.
engagement, to enumerate every third-party script, tag, pixel, and iframe present on the audited
landing page after a real headless-browser load, including anything Google Tag Manager hydrates at
runtime, and to flag content-injection/metadata-manipulation tooling (Search Atlas's OTTO Pixel and
peers) as its own category. Full scope and acceptance criteria:
prd-004-vendor-inventory.
Every factual claim this skill makes traces to a downloaded primary source in
references/research/raw/ or to this pair's PRD/the build plan. The archive covers only Google Tag
Manager and Search Atlas in real depth, two sources total; everywhere else (the broader vendor
lookup table's judgment-call rows, and the Search Atlas detection signature itself, which the
vendor's own page never documents) that gap is named explicitly, never smoothed into an unstated
guess. See references/research/distilled-vendor-inventory.md and
references/vendor-lookup-table.md.
When to use this skill
- Wave W1b of every audit run, in parallel with
stack-fingerprint-worker-bee (wave W1a)
- Flagging content-injection/SEO-manipulation tooling before an SEO/AEO audit runs, so
technical-seo-worker-bee (prd-008) and aeo-audit-worker-bee (prd-009) know some on-page
metadata may not be the client's own hand
- Building the vendor list
analytics-stack-worker-bee and web-security-posture-worker-bee later
interpret
When not to use
- Judging whether a detected vendor is good or bad, or a security/analytics risk, that belongs to
analytics-stack-worker-bee and web-security-posture-worker-bee downstream, this Stinger only
inventories, per PRD-004's explicit non-goal
- Classifying the site's technology stack or render mode, that is
stack-fingerprint-stinger's job
(its sibling wave, not this one)
- Any step that would create state on the target (order placement, form submission, auth bypass,
file upload), which defaults OFF and requires explicit per-run opt-in
Procedure
- Read
00-intake/ for the target URL and _shared/target-profile.json for render-mode context
(a CSR/hybrid site's real vendor list only appears after JS execution). If
target-profile.json does not exist yet, proceed anyway, the two wave-W1 Bees run in parallel by
design.
- Perform a real, read-only, JS-executed headless-browser load and capture the third-party network
request log, DOM
<script src> list, and rendered HTML, per
guides/01-headless-capture-procedure.md.
- Detect Google Tag Manager first, using all seven researched signals across three channels, then
cross-reference every other vendor row against the same page load rather than assuming GTM's
presence explains anything away, per
guides/02-gtm-hydration-and-downstream-tags.md.
- Detect and flag content-injection/metadata-manipulation tooling (Search Atlas OTTO Pixel and
peers) as its own category, labelled vendor-self-reported and
candidate, needs manual confirmation since no raw source documents its detection signature, per
guides/03-injection-tool-detection.md.
- Classify every remaining vendor by function (analytics, tag manager, chat, payments,
CRO/testing, SEO-injection, ads, consent/CMP, other) with evidence, per
guides/04-vendor-classification.md. Run shared/scripts/vendor-census.py to apply the lookup
table deterministically.
- Write
01-recon/vendor-inventory.md, cross-referencing the flagged content-injection findings
for prd-008/prd-009 per PRD-004 AC-2, per guides/05-write-vendor-inventory-report.md.
References map
references/vendor-lookup-table.md, load when applying or extending the vendor lookup table, or
verifying a classification's grounding (researched vs. judgment call)
references/templates/vendor-inventory-report-template.md, load when writing
01-recon/vendor-inventory.md
references/templates/vendor-entry.template.json, load when assembling the intermediate
per-vendor row shape before writing the markdown report
references/research/distilled-vendor-inventory.md, load when a domain claim needs verification
or this Stinger's coverage gaps need checking before making a claim
references/research/raw/, load when tracing a distilled claim back to its primary source
references/scripts/README.md and shared/scripts/vendor-census.py, load/run for the
deterministic classifier that drives steps 3-5 of the procedure above
Related bees and stingers
Critical Directive
- You must read all files and context contained within your skill.
- In the event your core knowledge does not provide sufficient guidance you must make every attempt to search the internet, related knowledge base documentation files, and other available resources to supplement your knowledge prior to proceeding with your task.
- Additional related skills can be found here:
- stack-fingerprint-stinger - parallel wave-W1 sibling; consult its
target-profile.json for render-mode context before capturing
Ship Gate
Ship Gate removed: vendor-inventory-stinger performs a read-only external website audit and writes
its output into the audited customer's www.<domain>-audit/ workspace, not into this repository. It
never produces a commit inside this repo as part of its own operation, so the Ship Gate
(security-stinger, then quality-stinger, then github-repo-health-stinger) does not apply to this
pair's runtime procedure. This is separate from the fact that changes to this plugin's own source
(this file included) still go through this repository's normal Ship Gate before being committed, per
the build plan's own development process, that gate governs building the plugin, not what the
plugin does when it runs.
1---2name: vendor-inventory-stinger3description: Third-party vendor census after a real JS-executed page load, including GTM-hydrated scripts and content-injection/metadata-manipulation tools like Search Atlas, classified by function.4license: AGPL-3.0-only5---67# Vendor Inventory Stinger89> **Forge status:** stages 1-6 complete (Topic, Research, Distillation, References, Guides, final10> Skill/Bee authorship). Stage 7 (Register: beekeeper-suit registration and cross-harness deploy)11> has not run yet.1213## Purpose1415Equips **vendor-inventory-worker-bee**, wave W1b of every Website Auditor by Legion Code Inc.16engagement, to enumerate every third-party script, tag, pixel, and iframe present on the audited17landing page after a real headless-browser load, including anything Google Tag Manager hydrates at18runtime, and to flag content-injection/metadata-manipulation tooling (Search Atlas's OTTO Pixel and19peers) as its own category. Full scope and acceptance criteria:20[prd-004-vendor-inventory](../../library/requirements/backlog/prd-004-vendor-inventory/prd-004-vendor-inventory-index.md).2122Every factual claim this skill makes traces to a downloaded primary source in23`references/research/raw/` or to this pair's PRD/the build plan. The archive covers only Google Tag24Manager and Search Atlas in real depth, two sources total; everywhere else (the broader vendor25lookup table's judgment-call rows, and the Search Atlas detection signature itself, which the26vendor's own page never documents) that gap is named explicitly, never smoothed into an unstated27guess. See `references/research/distilled-vendor-inventory.md` and28`references/vendor-lookup-table.md`.2930## When to use this skill3132- Wave W1b of every audit run, in parallel with `stack-fingerprint-worker-bee` (wave W1a)33- Flagging content-injection/SEO-manipulation tooling before an SEO/AEO audit runs, so34 `technical-seo-worker-bee` (prd-008) and `aeo-audit-worker-bee` (prd-009) know some on-page35 metadata may not be the client's own hand36- Building the vendor list `analytics-stack-worker-bee` and `web-security-posture-worker-bee` later37 interpret3839## When not to use4041- Judging whether a detected vendor is good or bad, or a security/analytics risk, that belongs to42 `analytics-stack-worker-bee` and `web-security-posture-worker-bee` downstream, this Stinger only43 inventories, per PRD-004's explicit non-goal44- Classifying the site's technology stack or render mode, that is `stack-fingerprint-stinger`'s job45 (its sibling wave, not this one)46- Any step that would create state on the target (order placement, form submission, auth bypass,47 file upload), which defaults OFF and requires explicit per-run opt-in4849## Procedure50511. Read `00-intake/` for the target URL and `_shared/target-profile.json` for render-mode context52 (a CSR/hybrid site's real vendor list only appears after JS execution). If53 `target-profile.json` does not exist yet, proceed anyway, the two wave-W1 Bees run in parallel by54 design.552. Perform a real, read-only, JS-executed headless-browser load and capture the third-party network56 request log, DOM `<script src>` list, and rendered HTML, per57 `guides/01-headless-capture-procedure.md`.583. Detect Google Tag Manager first, using all seven researched signals across three channels, then59 cross-reference every other vendor row against the same page load rather than assuming GTM's60 presence explains anything away, per `guides/02-gtm-hydration-and-downstream-tags.md`.614. Detect and flag content-injection/metadata-manipulation tooling (Search Atlas OTTO Pixel and62 peers) as its own category, labelled vendor-self-reported and `candidate, needs manual63 confirmation` since no raw source documents its detection signature, per64 `guides/03-injection-tool-detection.md`.655. Classify every remaining vendor by function (analytics, tag manager, chat, payments,66 CRO/testing, SEO-injection, ads, consent/CMP, other) with evidence, per67 `guides/04-vendor-classification.md`. Run `shared/scripts/vendor-census.py` to apply the lookup68 table deterministically.696. Write `01-recon/vendor-inventory.md`, cross-referencing the flagged content-injection findings70 for prd-008/prd-009 per PRD-004 AC-2, per `guides/05-write-vendor-inventory-report.md`.7172## References map7374- `references/vendor-lookup-table.md`, load when applying or extending the vendor lookup table, or75 verifying a classification's grounding (researched vs. judgment call)76- `references/templates/vendor-inventory-report-template.md`, load when writing77 `01-recon/vendor-inventory.md`78- `references/templates/vendor-entry.template.json`, load when assembling the intermediate79 per-vendor row shape before writing the markdown report80- `references/research/distilled-vendor-inventory.md`, load when a domain claim needs verification81 or this Stinger's coverage gaps need checking before making a claim82- `references/research/raw/`, load when tracing a distilled claim back to its primary source83- `references/scripts/README.md` and `shared/scripts/vendor-census.py`, load/run for the84 deterministic classifier that drives steps 3-5 of the procedure above8586## Related bees and stingers8788- [vendor-inventory-worker-bee](../../agents/vendor-inventory-worker-bee.md) - this Stinger's89 paired Bee90- [stack-fingerprint-stinger](../stack-fingerprint-stinger) - runs in parallel, wave W1a; this91 Stinger reads its `target-profile.json` for render-mode context92- [audit-intake-stinger](../audit-intake-stinger) - wave W0, scaffolds the workspace this Stinger93 reads `00-intake/` from94- [analytics-stack-stinger](../analytics-stack-stinger) - downstream consumer of this Stinger's95 vendor list; judges the analytics vendors this Stinger only inventories96- [web-security-posture-stinger](../web-security-posture-stinger) - downstream consumer of this97 Stinger's vendor list; judges third-party risk this Stinger only inventories9899## Critical Directive100101- You must read all files and context contained within your skill.102- In the event your core knowledge does not provide sufficient guidance you must make every attempt to search the internet, related knowledge base documentation files, and other available resources to supplement your knowledge prior to proceeding with your task.103- Additional related skills can be found here:104 - [stack-fingerprint-stinger](../stack-fingerprint-stinger) - parallel wave-W1 sibling; consult its `target-profile.json` for render-mode context before capturing105106## Ship Gate107108Ship Gate removed: vendor-inventory-stinger performs a read-only external website audit and writes109its output into the audited customer's `www.<domain>-audit/` workspace, not into this repository. It110never produces a commit inside this repo as part of its own operation, so the Ship Gate111(security-stinger, then quality-stinger, then github-repo-health-stinger) does not apply to this112pair's runtime procedure. This is separate from the fact that changes to this plugin's own source113(this file included) still go through this repository's normal Ship Gate before being committed, per114the build plan's own development process, that gate governs building the plugin, not what the115plugin does when it runs.