Source profileQuality 91/100Review permissions

garrytan/gbrain/skills/cold-start/SKILL.md

cold-start

Day-one data bootstrapping for a new brain. Sequences the highest-leverage data sources to go from empty brain to useful brain in one session. Uses ClawVisor for safe credential handling — the agent never holds raw API keys. Covers Gmail import, calendar sync, contacts seeding, X/Twitter archive, conversation imports, and file archives. Use when a user has just finished gbrain setup and asks "now what?"

Source repository stars
29,034
Declared platforms
0
Static risk flags
2
Last source update
2026-08-25
Source checked
2026-08-25

Decision brief

What it does: where it fits

You have a working brain. Search works. Now what?

Best for

  • Use when a user has just finished gbrain setup and asks "now what?

Not for

  • Giving the agent raw OAuth tokens. This is the 1 anti-pattern. An agent with
  • Bulk importing everything without filtering. The brain is for signal, not noise.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/garrytan/gbrain --skill "skills/cold-start"
Safe inspection promptEditorial

Inspect the Agent Skill "cold-start" from https://github.com/garrytan/gbrain/blob/9dadfb97308825f246d6d0534486affad71f211b/skills/cold-start/SKILL.md at commit 9dadfb97308825f246d6d0534486affad71f211b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Phase 0: ClawVisor Setup (only if your agent harness integrates ClawVisor)

    Harness check first. ClawVisor requires an agent host with a ClawVisor integration (for example, an OpenClaw deployment). On harnesses without one, such as Codex or Claude Code, skip this phase: the documented default for Contacts, Calendar, and Gmail is a Google Takeout export,…

    Credential vaulting — agent sees shadow tokens, never real secretsTask-scoped authorization — each workflow declares exactly what it needsAudit trail — every API call logged with metadata (who, what, when)
  2. 02

    Phase 1: Existing Markdown / Obsidian Import

    The highest-leverage first import. If the user already has a notes system, this is hundreds or thousands of structured pages ready to go.

    The highest-leverage first import. If the user already has a notes system, this is hundreds or thousands of structured pages ready to go.
  3. 03

    Phase 2: Google Contacts → People Pages

    Seeds the people/ directory. Every person in your contacts becomes a brain page with name, email, phone, company, and notes. This is the foundation that all other imports build on — when Gmail references "[email protected]", the brain already knows who John is.

    Export contacts from takeout.google.comParse the CSV: each row carries name, email(s), phone(s), organization,Run each row through the processing rules below to create people/ pages.
  4. 04

    Phase 3: Google Calendar (Last 90 Days)

    Meeting history with attendee context. Calendar events reveal who the user meets with, how often, and in what context. Combined with contacts, this builds a rich relationship map.

    Look up each attendee in the brain (they should exist from Phase 2)Add a timeline entry to their page: met at [event title] on [date]If an attendee has no brain page and appears in 3+ events, create one
  5. 05

    Phase 4: Gmail (Recent Threads)

    Relationship context and active threads. Email reveals organizational relationships, ongoing conversations, and communication patterns.

    Sent mail (last 30 days) — who the user actively communicates withStarred/important emails — user-curated signalThreads with 3+ replies — active conversations worth tracking

Permission review

Static risk signals and limitations

Runs scripts

medium · line 29

The documentation asks the agent to run terminal commands or scripts.

Agent has terminal access and can run `gbrain` CLI commands

Network access

medium · line 83

The documentation includes network, browsing, or remote request actions.

export CLAWVISOR_URL="https://app.clawvisor.com"

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars29,034SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
garrytan/gbrain
Skill path
skills/cold-start/SKILL.md
Commit
9dadfb97308825f246d6d0534486affad71f211b
License
MIT
Collected
2026-08-25
Default branch
master
View the original SKILL.md

Cold Start — Day-One Brain Bootstrapping

You have a working brain. Search works. Now what?

An empty brain is a static database. A brain with your email history, calendar, contacts, conversations, and social media is a live context membrane that makes every future interaction smarter. This skill sequences the highest-leverage data sources to get you from zero to useful in one session.

Contract

  • Every import phase is gated on user consent (ask-user pattern) before proceeding.
  • Google/social API access goes through ClawVisor. The agent never holds raw OAuth tokens or API keys. This is a safety requirement, not a preference. ClawVisor vaults credentials, enforces task-scoped authorization, logs every API call, and requires human approval for destructive operations. If the user doesn't want ClawVisor, the only safe alternative is offline file exports (Google Takeout, Twitter archive download).
  • Each phase is independently valuable — the user can stop after any phase and still have a useful brain.
  • Progress is tracked in ~/.gbrain/cold-start-state.json so interrupted sessions can resume.
  • Entity detection and cross-linking run on every import, not as a separate pass.

Prerequisites

  • GBrain installed and initialized (gbrain doctor --json all green)
  • Brain repo cloned and synced
  • Agent has terminal access and can run gbrain CLI commands

The Priority Stack

Data sources ranked by information density × ease of import:

PrioritySourceWhyTimePages Created
1Existing markdown/ObsidianHighest density — it's already structured5 min100s-1000s
2Google ContactsSeeds the people/ directory — names, emails, companies10 min50-500
3Google Calendar (90 days)Meeting history with attendee context15 min30-90
4Gmail (recent threads)Relationship context, active threads, org chart signals20 min50-200
5Conversations (ChatGPT/Claude exports)Your thinking, questions, mental models15 min10-100
6X/Twitter archiveYour public positions, takes, engagement patterns20 min30-365
7File archives (Dropbox/Drive/local)Historical documents, old writing, photos30+ minvaries
8Meeting transcripts (Circleback/etc.)Deep relationship context from recorded calls20 min10-50

Phase 0: ClawVisor Setup (only if your agent harness integrates ClawVisor)

Harness check first. ClawVisor requires an agent host with a ClawVisor integration (for example, an OpenClaw deployment). On harnesses without one, such as Codex or Claude Code, skip this phase: the documented default for Contacts, Calendar, and Gmail is a Google Takeout export, which covers all three offline (contacts CSV, calendar ICS, Gmail mbox). Phases 2-4 below document the Takeout path first.

Safety boundary: An AI agent with raw OAuth tokens to your Gmail, Calendar, and Contacts is an uncontrolled attack surface. One prompt injection, one malicious tool call, and your entire Google account is exposed. ClawVisor eliminates this risk class entirely.

ClawVisor is a credential gateway that sits between the agent and your APIs. The agent never sees your credentials — ClawVisor injects them at request time, enforces policies, and logs everything.

What ClawVisor gives you:

  • Credential vaulting — agent sees shadow tokens, never real secrets
  • Task-scoped authorization — each workflow declares exactly what it needs
  • Audit trail — every API call logged with metadata (who, what, when)
  • Human approval gates — destructive operations (send email, modify calendar) require your explicit approval
  • Multi-service — Gmail, Calendar, Contacts, Drive, GitHub, iMessage from one gateway
  • Revocation — disable the agent's access in one click, no token rotation needed

Setup (15 min):

  1. Sign up at app.clawvisor.com
  2. Create an agent in the dashboard, copy the agent token
  3. Set environment variables (in the host agent's environment — shell profile or harness config; gbrain itself has no ClawVisor config keys, these are consumed by the host's ClawVisor integration. This requires an agent host with a ClawVisor integration, such as an OpenClaw deployment. Codex and Claude Code do not consume these variables; use the offline import path instead):
    export CLAWVISOR_URL="https://app.clawvisor.com"
    export CLAWVISOR_AGENT_TOKEN="<token>"
    
  4. Activate Google services (Gmail, Calendar, Contacts) in the dashboard
  5. Create a standing task with expansive scope:

    "Full brain bootstrapping: read emails, calendar events, and contacts to populate knowledge base. List, read, and search across all connected accounts."

  6. Save the standing task ID the same way:
    export CLAWVISOR_TASK_ID="<task_id>"
    

Critical scoping rule: Be expansive in task purposes. "Email triage" gets rejected by intent verification. "Full executive assistant email management including inbox triage, searching by any criteria, reading emails, tracking threads" works. The intent model uses the purpose to judge each request.

If the user declines ClawVisor

Do NOT fall back to direct OAuth. Instead, proceed with offline-only imports:

  • Phases 2-4 (Contacts, Calendar, Gmail) — work from a Google Takeout export
  • Phase 1 (markdown/Obsidian) — works without any API access
  • Phase 5 (conversation exports) — works from downloaded JSON files
  • Phase 6 (X/Twitter) — works from downloaded archive
  • Phase 7 (file archives) — works from local files
  • Phase 8 (meeting transcripts) — works from exported transcripts

Tell the user:

"No problem. We'll work from file-based sources: a Google Takeout export covers Contacts, Calendar, and Gmail. You can set up ClawVisor anytime for live sync instead of point-in-time exports."

Do NOT offer direct OAuth as an alternative. An agent holding raw Google tokens is a security liability. The skill should not teach agents to store credentials they shouldn't have.

Phase 1: Existing Markdown / Obsidian Import

The highest-leverage first import. If the user already has a notes system, this is hundreds or thousands of structured pages ready to go.

Discovery

echo "=== Markdown Repository Discovery ==="
for dir in ~/git/* ~/Documents/* ~/notes/* ~/obsidian/*; do
  if [ -d "$dir" ]; then
    md_count=$(find "$dir" -name "*.md" -not -path "*/node_modules/*" \
      -not -path "*/.git/*" -not -path "*/.obsidian/*" 2>/dev/null | wc -l | tr -d ' ')
    if [ "$md_count" -gt 5 ]; then
      total_size=$(du -sh "$dir" 2>/dev/null | cut -f1)
      echo "  $dir ($total_size, $md_count .md files)"
    fi
  fi
done

Import

# Obsidian vaults are markdown directories — import directly, then wire wikilinks
# (full flow: skills/migrate/SKILL.md)
gbrain import /path/to/vault --no-embed --workers 4
gbrain extract links --source db      # parses [[wikilinks]] natively

# For plain markdown directories
gbrain import /path/to/dir --no-embed --workers 4

# Verify
gbrain stats
gbrain search "<topic from the imported data>"

Post-import

  • Run link extraction: gbrain extract links --source db
  • Run timeline extraction: gbrain extract timeline --source db
  • Start embeddings: gbrain embed --stale (runs in background)

Track progress:

echo '{"phase_1_complete": true, "pages_imported": N}' > ~/.gbrain/cold-start-state.json

Phase 2: Google Contacts → People Pages

Seeds the people/ directory. Every person in your contacts becomes a brain page with name, email, phone, company, and notes. This is the foundation that all other imports build on — when Gmail references "[email protected]", the brain already knows who John is.

Via Google Takeout (default on harnesses without ClawVisor)

  1. Export contacts from takeout.google.com (select Contacts, CSV format), or directly from contacts.google.com via Export → Google CSV.
  2. Parse the CSV: each row carries name, email(s), phone(s), organization, and notes.
  3. Run each row through the processing rules below to create people/ pages.

Via ClawVisor (ClawVisor-integrated hosts only; pseudo-code)

// Fetch all contacts
const contacts = await clawvisor('google.contacts', 'list_contacts', {
  limit: 1000,
  fields: 'names,emailAddresses,phoneNumbers,organizations,biographies'
});

Processing rules

For each contact:

  1. Filter out noise — skip contacts with no name, no email, or that are clearly automated (noreply@, no-reply@, support@, notifications@)
  2. Check brain firstgbrain search "name" to avoid duplicates
  3. Create people/ page with:
    • Name, email(s), phone(s), company, title
    • Source attribution: [Source: Google Contacts, YYYY-MM-DD]
    • Any notes from the contact as initial context
  4. Link to company — if the contact has an organization, create/update the company page and link the person to it

Quality gate

After importing 5 contacts, pause and show the user a sample page. Ask:

"Here's what a contact page looks like. Want me to continue with the rest, or adjust the format first?"

Phase 3: Google Calendar (Last 90 Days)

Meeting history with attendee context. Calendar events reveal who the user meets with, how often, and in what context. Combined with contacts, this builds a rich relationship map.

Fetch events

Via Google Takeout (default on harnesses without ClawVisor): export Calendar from takeout.google.com (ICS format, one file per calendar). Parse each event (title, start/end, attendees), keep the last 90 days, and file them into the brain structure below.

Via ClawVisor (ClawVisor-integrated hosts only; pseudo-code):

// Via ClawVisor — query ALL calendar accounts
const accounts = ['[email protected]', '[email protected]'];
for (const account of accounts) {
  const events = await clawvisor(`google.calendar:${account}`, 'list_events', {
    timeMin: new Date(Date.now() - 90 * 86400000).toISOString(),
    timeMax: new Date().toISOString(),
    singleEvents: true,
    orderBy: 'startTime'
  });
}

Brain structure

Follow the three-tier calendar architecture:

brain/daily/calendar/
├── calendar-log.md              ← compiled truth (patterns, key people)
├── YYYY/
│   ├── YYYY-MM.md               ← monthly summary
│   └── YYYY-MM-DD.md            ← daily event log

Entity enrichment

For each event with attendees:

  1. Look up each attendee in the brain (they should exist from Phase 2)
  2. Add a timeline entry to their page: met at [event title] on [date]
  3. If an attendee has no brain page and appears in 3+ events, create one
  4. Link attendees who appear in the same meeting

Phase 4: Gmail (Recent Threads)

Relationship context and active threads. Email reveals organizational relationships, ongoing conversations, and communication patterns.

On harnesses without a ClawVisor integration, the source is the Gmail mbox file from a Google Takeout export. The sampling and filtering rules below apply the same way.

Strategy: Smart sampling, not bulk import

Don't import every email. Import the signal:

  1. Sent mail (last 30 days) — who the user actively communicates with
  2. Starred/important emails — user-curated signal
  3. Threads with 3+ replies — active conversations worth tracking
  4. Emails from people already in the brain — enrichment, not cold import

Processing

For each email thread:

  1. Entity detection — extract people, companies mentioned
  2. Update people pages — add communication context to timeline
  3. Create meeting pages — if the email is a meeting summary or follow-up
  4. Skip noise — newsletters, automated notifications, marketing

Filtering rules

Auto-skip (never import):

  • noreply@, no-reply@, notifications@, support@, mailer-daemon@
  • Unsubscribe-heavy senders (marketing)
  • GitHub/Jira/Linear notification emails
  • Calendar invites (already captured in Phase 3)

Always import:

  • Direct emails from people in the brain
  • Starred/flagged emails
  • Emails the user sent (their words are highest-value signal)

Phase 5: Conversation Exports (ChatGPT / Claude / Perplexity)

Your thinking, captured. AI conversation exports reveal what the user was researching, building, and thinking about. This is original thinking preserved in dialog form.

Supported formats

  • ChatGPT: Settings → Data Controls → Export → conversations.json
  • Claude: Download from claude.ai conversation history
  • Perplexity: Export from settings

Processing

For each conversation:

  1. Assess significance (1-5 scale):
    • 1 = Pure utility (how-tos, quick lookups) → skip or minimal page
    • 2 = Minor context → 1-paragraph note
    • 3 = Notable (reveals interests, building something) → full page
    • 4 = Important (deep personal processing, strategic thinking) → rich page
    • 5 = Defining (identity work, breakthrough insights) → full treatment
  2. Extract entities — people, companies, concepts discussed
  3. Capture original thinking — the user's exact phrasing is the signal. Never paraphrase.
  4. File by primary subject — not in a "conversations/" dump. A conversation about a person goes to people/, about a concept goes to concepts/, etc.

Quality rule

Only import conversations rated 3+. The brain is for signal, not noise.

Phase 6: X/Twitter Archive

Your public positions and engagement patterns. Twitter reveals what the user thinks, who they engage with, and what ideas they're developing publicly.

Data sources

  1. Twitter data export (Settings → Your Account → Download Archive)
    • Contains all tweets, likes, DMs, bookmarks
  2. Live API (if available) — recent tweets and engagement
  3. Bookmarks — curated signal, high value

Brain structure

brain/media/x/{handle}/
├── x-log.md                     ← compiled truth (themes, voice, key threads)
├── daily/YYYY-MM-DD.md          ← daily tweet log
├── monthly/YYYY-MM.md           ← monthly rollup
└── bookmarks/                   ← saved/bookmarked content

Processing

  • Original tweets → capture with full context, extract entities
  • Quote tweets → capture the user's commentary + the source tweet
  • Threads → reconstruct as a single narrative
  • Bookmarks → high-signal curation, import with tags
  • Likes — low signal, skip unless the user wants them

Phase 7: File Archives

Historical documents, old writing, photos with metadata. This is the long tail — less structured but potentially very high value (old journals, letters, early writing).

Delegate to the archive-crawler skill. It handles:

  • Crawling directory structures
  • Filtering for high-value content (user's own writing, not installers)
  • Text extraction from PDFs, images (OCR), documents
  • Entity extraction and brain page creation

Safety gate: Archive crawling can be slow and create many pages. archive-crawler is a skill, not a CLI command — it refuses to run without an explicit archive-crawler.scan_paths: allow-list in gbrain.yml. Add the archive path to the allow-list, run the skill's scan pass first, and show the user the manifest before proceeding with full ingestion.

Supported sources:

  • Local directories (Dropbox sync folder, Google Drive, old hard drives)
  • Cloud storage (Backblaze B2, S3) via mounted paths
  • Email archives (PST, mbox, EML, Google Takeout)
  • Data exports (LinkedIn, Facebook, etc.)

Phase 8: Meeting Transcripts

Deep relationship context from recorded calls. If the user has a meeting recording service (Circleback, Otter, Fireflies, Read.ai), import recent transcripts.

Delegate to meeting-ingestion skill. Key rules:

  • Always pull the complete transcript, not just the AI summary
  • Entity propagation is MANDATORY — every attendee gets a timeline update
  • A meeting is NOT fully ingested until all entity pages are updated

Post-Bootstrap Checklist

After completing available phases:

  1. Verify brain health:

    gbrain doctor --json
    gbrain stats
    
  2. Test retrieval:

    gbrain query "who do I meet with most often?"
    gbrain query "what am I working on?"
    gbrain search "<person from contacts>"
    
  3. Set up live sync (if not already):

    • Calendar: daily cron
    • Email: periodic sweep (4-8 hours)
    • X: daily ingest
    • Brain repo: gbrain sync --repo <path> every 5-30 minutes
  4. Track state:

    // ~/.gbrain/cold-start-state.json
    {
      "started": "2026-01-15T10:00:00Z",
      "credential_gateway": "clawvisor",
      "phases_completed": [1, 2, 3, 4],
      "phases_skipped": [6, 7],
      "total_pages_created": 847,
      "total_entities_linked": 1203,
      "next_phase": 5
    }
    
  5. Tell the user what to do next:

    "Your brain has N pages across people, calendar, email, and conversations. Live sync is configured for [sources]. From here:

    • The signal-detector captures entities from every conversation
    • The briefing skill can compile daily context
    • The daily-task-prep skill handles day planning
    • Say 'enrich [person]' to deep-dive any contact"

Anti-Patterns

  • Giving the agent raw OAuth tokens. This is the #1 anti-pattern. An agent with raw Gmail/Calendar tokens is an uncontrolled attack surface — one prompt injection and your entire Google account is exposed. Use ClawVisor. If the user declines ClawVisor, skip to offline imports. Never offer direct OAuth as a fallback.
  • Bulk importing everything without filtering. The brain is for signal, not noise. Filter out automated senders, marketing emails, utility conversations.
  • Importing without entity cross-linking. Every import should detect entities and update existing brain pages. Isolated imports don't compound.
  • Not gating on user consent. Every phase should be presented as a choice. The user may not want their DMs or therapy conversations imported.
  • Importing everything at significance 1. Not every conversation is worth a brain page. Use the significance scale and skip utility content.
  • Creating people pages for automated senders. Sentry, GitHub notifications, newsletter platforms are not people. Filter by the rules in Phase 4.

Resume Protocol

If the session is interrupted:

  1. Read ~/.gbrain/cold-start-state.json
  2. Skip completed phases
  3. Resume from next_phase
  4. The user doesn't have to repeat credential setup or re-import completed sources

Output Format

After each phase:

PHASE N COMPLETE: [source name]
================================

Pages created: N
Pages updated: N
Entities linked: N
Time elapsed: N min

Sample pages:
- people/jane-smith.md (created — 3 emails, 5 meetings)
- companies/acme-corp.md (updated — 2 new employees linked)

Next: Phase N+1 — [description]. Ready to proceed?

Tools Used

  • search — check for existing pages before creating
  • query — hybrid search for entity deduplication
  • get_page — read existing pages for merge decisions
  • put_page — create and update brain pages
  • add_link — cross-reference entities
  • add_timeline_entry — record events on entity timelines
  • sync_brain — sync changes to the index after each phase

Frequently asked questions

What to verify before installation and use

What does the cold-start source document cover?

You have a working brain. Search works. Now what?

How do I install cold-start?

The source record exposes this install command: npx skills add https://github.com/garrytan/gbrain --skill "skills/cold-start". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script, network in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,511

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,034

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10024,921

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,241

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing