Skill Tracer
Skills › Archify › archify › brand-marks.md

brand-marks.md

119 lines · archify/references/brand-marks.md at a406594

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Brand marks
2
3Use a brand mark only when a real product, provider, model family, channel, or
4service identity helps the reader. Semantic `type` still explains what the node
5does; `brand` explains whose product it is.
6

Brand marks

Use a brand mark only when a real product, provider, model family, channel, or service identity helps the reader. Semantic type still explains what the node does; brand explains whose product it is.

Raw lines 1 to 6
7## Agent decision path
8
91. Search the built-in catalogue when the request names a recognizable brand:
11 ```bash
12 node bin/archify.mjs brands "Claude" --json
13 ```
152. Put the returned canonical ID in the node, participant, or state:
17 ```json
18 {
19 "id": "planner",
20 "type": "backend",
21 "label": "Claude",
22 "brand": "claude"
23 }
24 ```
263. If there is no catalogue match and the user supplied the official website,
27 capture its icon explicitly:
29 ```bash
30 node bin/archify.mjs brands capture "https://partner.example.com" --json
31 ```
33 Put the command's digest-pinned `brand` value in the authored node:
35 ```json
36 {
37 "id": "partner",
38 "type": "external",
39 "label": "Partner portal",
40 "brand": {
41 "url": "https://partner.example.com",
42 "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
43 }
44 }
45 ```
474. If there is no match and no user-provided URL, omit `brand`. Do not invent a
48 URL or silently assign a visually similar company.
50Known-brand URLs resolve to the bundled vector instead of using the network.
51For discovered icon `href` attributes, capture decodes the basic named references
52`amp`, `quot`, `apos`, `lt`, `gt` (and their defined uppercase aliases), plus
53decimal and hexadecimal numeric references, once before URL resolution. Thus
54`/icon.png?v=1&size=32` requests `/icon.png?v=1&size=32`. URL percent escapes
55remain intact; nested escapes are not decoded recursively. This bounded decoder
56does not add a general HTML parser or support every named HTML entity.
57HTML reads stop at an explicit head ending outside comments, raw-text elements
58and quoted attributes, including when those tokens span network chunks. The
59256 KiB head limit and capture deadline still apply; a larger body after the
60head is not read for icon discovery.
61Icon candidates come from complete `link` tags outside comments, raw text and
62template contents. Attribute values and lookalike names such as `data-href`
63cannot supply icon declarations; quoted `>` characters stay within their tags.
64For `text/html`, discovery treats `noscript` contents as raw text, matching
65scripting-enabled HTML parsing; capture does not execute scripts. This exclusion
66does not apply to `application/xhtml+xml`, where `noscript` links remain
67discoverable. XHTML empty elements such as `<script />` and `<template />` do not
68hide following links; the same trailing slash does not close those elements in
69`text/html`.
70Unknown URL capture accepts only bounded raster image formats, blocks
71credentials, nonstandard public ports, and private or link-local destinations,
72uses bounded concurrency and one total deadline, and returns the captured
73content digest. Later render and validate operations require that exact digest;
74blocked, unavailable, changed, oversized, or unsafe content fails closed instead
75of silently changing the artifact.
77Remote-brand provenance in capture receipts, node metadata and SVG/HTML keeps
78the source URL's HTTP(S) scheme, host, port and path, but omits userinfo, query
79strings and fragments. The authored `brand.url` and all download/redirect URLs
80remain unchanged so existing pins still reproduce the same bytes and digest.
81Credential-bearing download URLs remain rejected. Built-in marks retain their
82recorded catalogue provenance.
84The public source link identifies the original site/path, not necessarily a
85downloadable asset: removing a signed query or a query-based page selector can
86make that link unusable or less specific. Prefer capturing a stable public
87landing page that exposes the intended icon when one is available; do not edit
88an existing pin's URL without capturing and verifying that source again. Paths
89are retained, so this normalization is not a general URL-secret scrubber.
91After upgrading from a version that captured inactive HTML markup (including
92`noscript`), an existing URL pin may fail with `brand/digest-mismatch` because
93discovery now selects a different icon. Inspect the intended icon, rerun the
94capture command above for the same URL, and explicitly replace the authored
95`brand` value with the returned pin. Existing pins are not rewritten
96automatically, and digest verification remains enforced.
98For ICO captures, every directory entry must reference a non-empty image range
99after the complete directory and within the downloaded file. This bounds check
100also applies when reproducing a pinned capture. PNG/DIB payloads, multiple
101images, shared or out-of-order ranges, and trailing bytes remain supported;
102the check does not decode pixels or guarantee that an otherwise bounded payload
103is decodable. A rejected ICO candidate does not prevent trying later icons.
105Page, icon and redirect requests send `Accept-Encoding: identity`. Capture does
106not decompress response bodies: a successful response declaring another content
107coding is closed and rejected explicitly. This keeps the existing byte limits
108and pinned digest tied to the unencoded representation. A later usable icon may
109still succeed; otherwise an encoding error is retained instead of being hidden
110by an unrelated favicon 404.
112The final artifact never fetches a brand asset when opened. Preset vectors and
113digest-verified captured site icons remain embedded in SVG, PNG, WebP, JPEG,
114Share Card, and WebM exports.
116Use `node bin/archify.mjs brands --json` to inspect all canonical IDs, aliases,
117categories, domains, and provenance. Current categories cover AI, cloud,
118engineering, data, collaboration, business systems, channels, languages, and
119frameworks.

Agent decision path

  1. Search the built-in catalogue when the request names a recognizable brand:

bash node bin/archify.mjs brands "Claude" --json

  1. Put the returned canonical ID in the node, participant, or state:

json { "id": "planner", "type": "backend", "label": "Claude", "brand": "claude" }

  1. If there is no catalogue match and the user supplied the official website, capture its icon explicitly:

bash node bin/archify.mjs brands capture "https://partner.example.com" --json

Put the command's digest-pinned brand value in the authored node:

json { "id": "partner", "type": "external", "label": "Partner portal", "brand": { "url": "https://partner.example.com", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" } }

  1. If there is no match and no user-provided URL, omit brand. Do not invent a URL or silently assign a visually similar company.

Known-brand URLs resolve to the bundled vector instead of using the network. For discovered icon href attributes, capture decodes the basic named references amp, quot, apos, lt, gt (and their defined uppercase aliases), plus decimal and hexadecimal numeric references, once before URL resolution. Thus /icon.png?v=1&amp;size=32 requests /icon.png?v=1&size=32. URL percent escapes remain intact; nested escapes are not decoded recursively. This bounded decoder does not add a general HTML parser or support every named HTML entity. HTML reads stop at an explicit head ending outside comments, raw-text elements and quoted attributes, including when those tokens span network chunks. The 256 KiB head limit and capture deadline still apply; a larger body after the head is not read for icon discovery. Icon candidates come from complete link tags outside comments, raw text and template contents. Attribute values and lookalike names such as data-href cannot supply icon declarations; quoted > characters stay within their tags. For text/html, discovery treats noscript contents as raw text, matching scripting-enabled HTML parsing; capture does not execute scripts. This exclusion does not apply to application/xhtml+xml, where noscript links remain discoverable. XHTML empty elements such as <script /> and <template /> do not hide following links; the same trailing slash does not close those elements in text/html. Unknown URL capture accepts only bounded raster image formats, blocks credentials, nonstandard public ports, and private or link-local destinations, uses bounded concurrency and one total deadline, and returns the captured content digest. Later render and validate operations require that exact digest; blocked, unavailable, changed, oversized, or unsafe content fails closed instead of silently changing the artifact.

Remote-brand provenance in capture receipts, node metadata and SVG/HTML keeps the source URL's HTTP(S) scheme, host, port and path, but omits userinfo, query strings and fragments. The authored brand.url and all download/redirect URLs remain unchanged so existing pins still reproduce the same bytes and digest. Credential-bearing download URLs remain rejected. Built-in marks retain their recorded catalogue provenance.

The public source link identifies the original site/path, not necessarily a downloadable asset: removing a signed query or a query-based page selector can make that link unusable or less specific. Prefer capturing a stable public landing page that exposes the intended icon when one is available; do not edit an existing pin's URL without capturing and verifying that source again. Paths are retained, so this normalization is not a general URL-secret scrubber.

After upgrading from a version that captured inactive HTML markup (including noscript), an existing URL pin may fail with brand/digest-mismatch because discovery now selects a different icon. Inspect the intended icon, rerun the capture command above for the same URL, and explicitly replace the authored brand value with the returned pin. Existing pins are not rewritten automatically, and digest verification remains enforced.

For ICO captures, every directory entry must reference a non-empty image range after the complete directory and within the downloaded file. This bounds check also applies when reproducing a pinned capture. PNG/DIB payloads, multiple images, shared or out-of-order ranges, and trailing bytes remain supported; the check does not decode pixels or guarantee that an otherwise bounded payload is decodable. A rejected ICO candidate does not prevent trying later icons.

Page, icon and redirect requests send Accept-Encoding: identity. Capture does not decompress response bodies: a successful response declaring another content coding is closed and rejected explicitly. This keeps the existing byte limits and pinned digest tied to the unencoded representation. A later usable icon may still succeed; otherwise an encoding error is retained instead of being hidden by an unrelated favicon 404.

The final artifact never fetches a brand asset when opened. Preset vectors and digest-verified captured site icons remain embedded in SVG, PNG, WebP, JPEG, Share Card, and WebM exports.

Use node bin/archify.mjs brands --json to inspect all canonical IDs, aliases, categories, domains, and provenance. Current categories cover AI, cloud, engineering, data, collaboration, business systems, channels, languages, and frameworks.

Raw lines 7 to 119
Runs code bin/archify.mjs :12