Community寫作與編輯github.com

built-for-devs/dev-trace-skill

Turn an email into an enriched, cited public profile: a zero-dependency agent skill with a free-to-premium enrichment waterfall (GitHub, Tabstack, Hunter, SixtyFour).

相容平台~Claude Code~Codex CLI~Cursor
npx skills add built-for-devs/dev-trace-skill

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

說明文件

dev-trace

Turns an email into a structured public profile by running a fixed waterfall of public sources, each layer gated by whether its API key is present. Public data only—below the confidence threshold it returns candidates rather than guessing. Zero dependencies (Node 18+); bring your own API keys.

How to run

node scripts/dev-trace.mjs <email> [--pretty] [--json <path>] [--max-depth N] [--deep] [--tier low|medium|high] [--no-bio] [--bio-mode fast|balanced|deep|max]
  • --pretty—human-readable JSON (use this when showing the user).
  • --json <path>—write the raw object to a file instead of stdout.
  • --max-depth N—stop after depth N (0–4) for the fast layers. Default 4.
  • --deep—also run depth 5 (SixtyFour). Slow (minutes) and expensive; requires SIXTYFOUR_API_KEY.
  • --tier low|medium|high—SixtyFour research depth (default low). Higher = more thorough, slower, more credits.
  • --no-bio—skip the Tabstack /research bio step (on by default when a name is resolved and TABSTACK_API_KEY is set).
  • --bio-mode fast|balanced|deep|max—research depth for the bio (default fast).

The waterfall

DepthLayerSourceKeyRuns
0validatesyntax + MX + disposablenonealways, free
1surfaceGravatar + domain scrapenonealways, free
1verifyHunter email verificationHUNTER_API_KEYif key
2profileGitHub identity + ICP basicsGITHUB_TOKEN (recommended)always, free
3enrichedTabstack web/companyTABSTACK_API_KEYif key
4deepHunter person enrichmentHUNTER_API_KEYif key
5deepestSixtyFour people-intelligence (LinkedIn search)SIXTYFOUR_API_KEYonly with --deep

HUNTER_API_KEY unlocks both verification (depth 1, 0.5 credits/call) and person enrichment (depth 4, 0.2 credits/call)—note verify costs more than enrichment. Depth 5 (SixtyFour) is the opt-in deep dive: it runs only with --deep, takes minutes (async web research), and anchors on the email itself plus any name/company/LinkedIn found upstream. It skips only for disposable or undeliverable emails (logged in meta).

Keys

Copy .env.example to .env in this skill directory and add whatever keys you have (the engine reads .env from the skill root or scripts/). All are optional; the validate, surface, and GitHub layers run with none. A layer whose key is absent is silently skipped. Keys are never bundled with the skill (.env is gitignored).

Cost & usage policy (for the agent)

The skill is built so you get a useful profile for free, and each paid provider is opt-in—spend only when a lead is worth it.

Cost tiers, cheapest first:

  • 🟢 Free, no account—validate, surface (Gravatar + domain), GitHub identity. Run with zero keys.
  • 🟢 Free key, optionalGITHUB_TOKEN (free to generate) just raises GitHub's rate limit and reliability.
  • 🟢 Free account, goes farTabstack (TABSTACK_API_KEY): company enrichment (depth 3) + the cited /research bio. A free Tabstack account covers a lot before you ever pay.
  • 🟡 Metered credits, free tier then paidHunter (HUNTER_API_KEY): email verification (0.5 cr) + person enrichment (0.2 cr).
  • 🔴 Premium, real $$$$SixtyFour (SIXTYFOUR_API_KEY, --deep): deepest person + LinkedIn search. The break-glass layer for high-value targets.

Per-layer detail:

LayerCostRuns
1 verify (Hunter)0.5 Hunter creditsif HUNTER_API_KEY present
3 Tabstack companyTabstack creditsif TABSTACK_API_KEY present
4 Hunter person0.2 Hunter creditsif HUNTER_API_KEY present
bio (Tabstack /research)Tabstack credits (fast cheapest)if a name was resolved
5 SixtyFourexpensive—see belowonly with --deep

Policy: default to free + cheap layers. For a quick free lookup, --max-depth 2 runs only the no-cost layers.

SixtyFour (--deep) is expensive and rate-limited. Exact cost depends on your SixtyFour plan; on the entry plan (~100 credits/month, $0.24/credit) a medium people-intelligence pull measured 20 credits ($4.80, ~2.5 min), i.e. roughly 5 pulls/month. Treat every --deep run as a scarce resource:

  • Never run --deep to "be thorough." Only on a genuinely high-value target.
  • Only after the cheaper layers (Hunter person enrichment, the /research bio) have come up short.
  • Confirm with the user before spending a SixtyFour pull, and default --tier low—never raise the tier unprompted.
  • Enforced, not just advised: --deep refuses to run unless a human accepted the cost, via DEV_TRACE_ALLOW_DEEP=1 in the environment or an interactive confirmation. It cannot fire autonomously. DEV_TRACE_MAX_DEPTH=N caps depth for headless use. See the README "Headless / autonomous agents" section.

--bio-mode above fast and depths 3/4 spend ordinary credits—fine when relevant, but don't raise --bio-mode unprompted.

Bio (Tabstack /research)

After the identity layers, if a name was resolved and TABSTACK_API_KEY is set, a Tabstack /research call synthesizes a cited professional bio into the profile, with source URLs in meta.bio_sources. Default mode fast (cheapest); raise with --bio-mode, or skip with --no-bio. Needs a name, so without a Hunter/GitHub match it only runs alongside --deep (which supplies the name via SixtyFour).

When relaying results: report which depths ran (meta.depths_run) and which keys would unlock more. Do not invent fields the trace did not return.

Output

{
  "meta": { "email": "...", "depths_run": [0,1,2], "match_status": "probable", "generated_at": "..." },
  "profile": { "<field>": { "value": "...", "confidence": 0.85, "sources": ["github"], "conflict": null } }
}
  • Every field is wrapped with value, confidence (0–1), sources, and conflict (null, or the competing value when layers disagree).
  • meta.match_status: verified (confirmed identity + deliverable), probable (identity found, unconfirmed), unverified_candidates (below threshold).
  • Failed or rate-limited layers are recorded in meta.errors / meta.rate_limited; the waterfall never aborts on one layer.

Notes

  • Produces the profile only. Shaping it into a CRM record, brief, or other deliverable is a separate follow-on step.
  • Standalone and distributable: zero dependencies (Node 18+), no external clone or build required.
  • Public data only; no invented profiles. Below the confidence threshold it returns candidates instead of asserting a value.

相關技能

steipete/notion

Notion CLI/API for pages, Markdown content, data sources, files, comments, search, Workers, and raw API calls.

community

affaan-m/seo

Audit, plan, and implement SEO improvements across technical SEO, on-page optimization, structured data, Core Web Vitals, and content strategy. Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping.

community

affaan-m/brand-voice

Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that profile across content, outreach, and social workflows. Use when the user wants voice consistency without generic AI writing tropes.

community

affaan-m/crosspost

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

community

affaan-m/x-api

X/Twitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.

community

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

community