AGENT SKILL

triangulate-independent-sources

Use when a factual claim rests on a single source. Confirms it against at least two independent origins before repeating it.

License 许可
MIT
最近更新
2026-11-15
Stars
★ 81
Forks
17

01 前言 Front Matter

name
triangulate-independent-sources
description
Use when a factual claim rests on a single source. Confirms it against at least two independent origins before repeating it.

02 资源文件 3

03 SKILL.md 正文

Triangulate Independent Sources

A claim is only as strong as the number of independent places it survives. Two articles quoting the same press release are one source, not two.

Procedure

  1. List every load-bearing factual claim in the answer. A claim is load-bearing when deleting it changes the conclusion.
  2. For each claim record: URL, publisher, named author, publication date, and — critically — the origin that source cites.
  3. Trace citations to their root. Run curl -sL "<url>" | grep -oE 'https?://[^" ]+' | head, then follow the first upstream link. If two sources resolve to the same root document, count them once.
  4. Score independence. Two sources are independent only if they differ in at least two of: publisher, underlying data, named author, funding source.
  5. Label each claim [triangulated: N], [single-source], or [contradicted] inline.
  6. When sources disagree, keep both figures and name the disagreement. Never average two conflicting numbers into one.
  7. If no second independent source exists, write single-sourced from <X> rather than quietly deleting the hedge.

A cheap independence probe:

import hashlib, urllib.request
def fingerprint(url):
    body = urllib.request.urlopen(url, timeout=10).read()
    return hashlib.sha256(body).hexdigest()[:12]
# equal digests -> same upstream text -> one source

Pitfalls

  • Syndication: one wire story printed in 40 outlets reads like 40 sources. Grep for the wire credit ("Reuters", "AP") and collapse them.
  • Circular reporting: an aggregator cites a blog that cites the aggregator back.
  • Date collapse: several pieces from the same 24-hour news cycle usually share one origin.
  • Silence is not denial — a source failing to mention a claim does not refute it.
  • Two papers by the same group on the same cohort are not independent replications.

Verification

grep -c '\[single-source\]' answer.md

Every load-bearing claim is either triangulated across 2+ independent sources or explicitly marked single-source. Report: "Claim X triangulated across 2 independent sources (common origin suppressed); claim Z remains single-sourced and is flagged."

04 同仓库更多 Skills

jiayaoqijia
jiayaoqijia/cryptoskill

uniswap-v4-hooks

Find a Uniswap v4 hook for a problem, read its parameters and limitations, and decode what any hook address will do, using the HookForge MCP server or TypeScript SDK. Use when designing or reviewing a v4 pool with hooks.

★ 81
jiayaoqijia
jiayaoqijia/cryptoskill

operate-hood-oracle

Read the hood-oracle launch conviction feed and manage its trading arms through its MCP server on Robinhood Chain. Use when the user wants oracle scores for a launch, the engine status, or to arm, disarm, kill or close positions in the running hood-oracle engine.

★ 81
jiayaoqijia
jiayaoqijia/cryptoskill

user-sign-in

Add Internet Identity sign-in to a frontend or canister: passkey and OpenID (Google, Apple, Microsoft) sign-in with @icp-sdk/auth, sending users to an organization's SSO with ssoDomain, the client lifecycle, and local development. Also covers the primary origin an app's principals are permanently tied to: electing it, setting derivationOrigin, the ii-alternative-origins and ii-derivation-origin documents, and the ii-app-metadata document that names the app on the sign-in screen. Use when adding sign-in, login, auth, passkeys or Internet Identity to an app, when an app gains a custom domain or a sibling app, or when the same user arrives as a different principal on two origins. For a verified email or name in the backend use user-attributes; to notify users use user-notifications; to set up an organization's own SSO use organization-sign-in. Do NOT use for wallet or ICRC signer flows (use wallet-integration) or for an agent or CLI signing in as a user (use agent-web-identity).

★ 81
jiayaoqijia
jiayaoqijia/cryptoskill

user-notifications

Notify your app's users from your canister, on their devices and even while the app is closed. Internet Identity delivers each notification (as web push), so there is no push service, no VAPID keys and no device tokens in the app: the canister addresses a user and II reaches their browsers. Covers asking the user's consent in the frontend (requestNotificationConsent, getNotificationConsentStatus, revokeNotificationConsent, needing @icp-sdk/auth 11.1.0), the /.well-known/ii-notification-senders document, and sending with the identity-notifications library from Motoko or Rust. Use when an app must tell a user something while they are not looking at it, when adding notifications, web push or a notifications toggle, or when the user consented and nothing arrives. Assumes sign-in already works and the app's primary origin is settled: load user-sign-in first. Do NOT use for in-app notification UI or email, or for reaching anyone who is not a signed-in user of this app.

★ 81
jiayaoqijia
jiayaoqijia/cryptoskill

user-attributes

Know a signed-in user's name, email or organization in a canister, not only their principal. Internet Identity signs an attribute bundle alongside the delegation, and the backend verifies the signer, the frontend origin and a nonce it issued itself before believing any of it. Use when a canister must know something about the caller beyond their principal: filling a profile, showing a name the user never typed into your app, contacting them, or gating access or an allowlist on an address the user provably controls; and when the backend rejects a bundle the frontend has just obtained. Covers the frontend request, scoping attributes to the account signed in with, and the identity-attributes library for Motoko and Rust. Assumes sign-in already works: load user-sign-in first. Do NOT use for the sign-in flow itself, for an email address the user typed in (that is ordinary app input, which II has not checked), or for an agent or CLI acting as a user (agent-web-identity).

★ 81
jiayaoqijia
jiayaoqijia/cryptoskill

single-sign-in

Let a user sign in once and be signed in across a whole suite of apps on sibling subdomains: opening a second app needs no second visit to Internet Identity, and signing out of one signs them out of all. Covers the shared record with CookieStateStorage, the /reauth route that silently acquires each app's own credential under transport: 'redirect' and prompt: 'none', the per-origin /.well-known/ii-auth-callbacks document, reading signed-in-elsewhere on load and offering it mid-session, and what ends the session. Use when a suite of apps under one domain should need a single sign-in, when moving between them asks the user to sign in again, or when /reauth bounces in a loop. Every app must already derive from one elected primary origin: load user-sign-in and settle that first. Do NOT use for a single app on one origin, which needs none of this, for apps on unrelated domains, which cannot share a cookie, or for staff signing in with their organization's identity provider (use organization-sign-in).

★ 81