public-keychain
Research and prepare a new public keychain for a website or service. Use when asked to create or prepare a public keychain for a domain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Research and prepare a new public keychain for a website or service. Use when asked to create or prepare a public keychain for a domain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Write queries and mutations with Gertrude's custom Duet/DuetSQL ORM.
Query and analyze the Gertrude PostgreSQL database. Use when answering questions about database schema, writing SQL queries, analyzing data, or debugging database-related issues.
Update local Apple device artwork for the Dashboard_v2 from ipsw.dev. Use when asked to add, refresh, audit, crop, or wire up Mac, iPhone, or iPad model images in web/dashboard-v2/public/devices, especially after new Apple model releases.
Run or design an agentic persona usability eval of a Gertrude surface - drive a real interface as a zero-backstory user, think aloud, and score it on a rubric. Use when asked to usability/UX test a site or app, or to measure whether a change improves real-user comprehension. The working driver today is web (Playwright MCP); native apps are not yet supported.
Verify non-trivial database migrations (data backfill, column drops, FK retargets, type changes, dedup) by capturing pre-migration baseline state, running the up/down/up cycle through the user, and asserting expected outcomes at each step. Use when a migration touches data — not just schema.
| name | public-keychain |
| description | Research and prepare a new public keychain for a website or service. Use when asked to create or prepare a public keychain for a domain. |
This skill guides you through researching, crawling, and preparing a public keychain for
a given domain. Public keychains are pre-built, admin-owned keychains with is_public = true in the parent.keychains table, available to all Gertrude parents. Mac app only.
Read these for context if you haven't already:
./web/site/markdoc/articles/docs/unblocking-guide.md — how the filter works and why
multiple domains are often needed./docs/support/mac-app.md lines 41-60 — public keychain conceptKey types:
anySubdomain — allows the domain and all subdomains. Used for most domains.domain (strict) — allows only the exact domain specified. Required for any domain in
the UNSAFE_DOMAINS list (see below).App scope: Most keychain keys should use webBrowsers scope.
UNSAFE_DOMAINS (defined in ./web/dash/keys/src/unlock.ts), read that file, and all
domains listed in the UNSAFE_DOMAINS array must always use strict domain type (never anySubdomain):
Use WebFetch to crawl these pages and note every external domain referenced:
https://example.com)www variant/login, /account, /subscribe)For each page, look for:
<script src="..."> — JS bundles, third-party scripts<link href="..."> — CSS, fonts<img src="..."> — image CDNs<source src="..."> — audio/video CDNs<iframe src="..."> — embeds<script> blocks loading third-party URLsContent-Security-Policy often reveals all allowed domains)Also fetch 1-2 JS bundle URLs to inspect what third-party services they reference.
INCLUDE — Core functionality:
EXCLUDE — Always:
googletagmanager.com, google-analytics.com)connect.facebook.net, www.facebook.com)platform.twitter.com, syndication.twitter.com)sentry.io, browser.sentry-cdn.com) — lean toward excludeEXCLUDE — Usually (use judgment):
twitter.com/intent/tweet, facebook.com/sharer) — hyperlinks
only, not loaded resourcesapps.apple.com, play.google.com) — hyperlinks onlyfonts.googleapis.com, fonts.gstatic.com): NEVER include theseCAUTION — Fonts:
CAUTION — CDN wildcard domains:
dch8lckz6x8ar.cloudfront.net),
include as a strict domain key (because cloudfront.net is in UNSAFE_DOMAINS)Note if the site has:
Minimize keys: Use anySubdomain on the root domain wherever possible — this often
covers the main site, API subdomains, and content subdomains in one key.
Avoid over-including: Do not add domains just because they appear in the page source. Social links, app store links, and tracking pixels are not needed for the site to function.
Read the database skill at ./.agents/skills/database/SKILL.md for connection info.
Before inserting anything:
parent.keychains and parent.keys to understand the structurekey JSONB format in useparent_id that owns public keychains by looking at existing onesUse the Swift models in ./swift/api/Sources/Api/Models/Keychain/ and
./swift/gertie/Sources/Gertie/Key.swift as the authoritative source for key types and
shapes — derive the JSONB structure from the types, don't guess.
Save the SQL used in a report file (see step 6) before executing it, so it can be reviewed and run against production after local testing.
Write a report file named agent.report.<site>-keychain.md in the project root.
Include: all domains found, categorization decisions, the SQL used, and any caveats
(unstable CDN subdomains, untested auth sections, etc.).
When reporting findings to the user, provide: