Skip to content
Back to skills

Glean Hello World

ASecurity

'Index documents into Glean and search them back using the Indexing and

  • 2,719 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 21, 2026
ai-agentstypescriptgobashtestingapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Scanned September 21, 2026

npx -y skills add jeremylongshore/claude-code-plugins-plus --skill glean-hello-world --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Glean Hello World?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Glean Hello World
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-glean-hello-world-2494093a/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-glean-hello-world-2494093a)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: glean-hello-world
description: 'Index documents into Glean and search them back using the Indexing and
  Client APIs.

  Use when starting a new Glean custom connector, testing search quality,

  or learning the index/search pattern.

  Trigger: "glean hello world", "glean example", "glean index document", "glean search".

  '
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(curl:*)
version: 1.8.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- enterprise-search
- glean
compatibility: Designed for Claude Code
---
# Glean Hello World

## Overview

Index documents into Glean and search them. Two steps: set up a custom datasource with the Indexing API, then query with the Client API.

## Prerequisites

- Use an approved sandbox datasource, scoped non-production credentials, and fictional sample documents only.
- Prepare one synthetic identity allowed to see the sample and one that must be denied, plus a deletion path for the test records.
- Record opaque test IDs locally; do not use a production wiki, employee identity, or real result snippet as tutorial data.

## Instructions

### Step 1: Set Up Custom Datasource

```typescript
const GLEAN = `https://${process.env.GLEAN_DOMAIN}/api`;
const idxHeaders = {
  'Authorization': `Bearer ${process.env.GLEAN_INDEXING_TOKEN}`,
  'Content-Type': 'application/json',
};

// Create or configure a custom datasource
await fetch(`${GLEAN}/index/v1/adddatasource`, {
  method: 'POST', headers: idxHeaders,
  body: JSON.stringify({
    name: 'my_wiki',
    displayName: 'Internal Wiki',
    datasourceCategory: 'PUBLISHED_CONTENT',
    urlRegex: 'https://wiki.company.com/.*',
    iconUrl: 'https://wiki.company.com/favicon.ico',
  }),
});
```

### Step 2: Index Documents

```typescript
// Index individual documents
await fetch(`${GLEAN}/index/v1/indexdocuments`, {
  method: 'POST', headers: idxHeaders,
  body: JSON.stringify({
    datasource: 'my_wiki',
    documents: [{
      id: 'doc-001',
      title: 'Getting Started Guide',
      url: 'https://wiki.company.com/getting-started',
      body: { mimeType: 'text/plain', textContent: 'This guide covers onboarding steps...' },
      author: { email: 'jane@company.com' },
      updatedAt: new Date().toISOString(),
      permissions: { allowAnonymousAccess: true },
    }],
  }),
});
console.log('Document indexed.');
```

### Step 3: Search

```typescript
const searchHeaders = {
  'Authorization': `Bearer ${process.env.GLEAN_CLIENT_TOKEN}`,
  'X-Glean-Auth-Type': 'BEARER',
  'Content-Type': 'application/json',
};

const results = await fetch(`${GLEAN}/client/v1/search`, {
  method: 'POST', headers: searchHeaders,
  body: JSON.stringify({
    query: 'onboarding getting started',
    pageSize: 10,
    requestOptions: { datasourceFilter: 'my_wiki' },
  }),
}).then(r => r.json());

results.results?.forEach((r: any) => {
  console.log(`${r.title} (${r.url}) — score: ${r.score}`);
});
```

## Output

```
Document indexed.
Getting Started Guide (https://wiki.company.com/getting-started) — score: 0.95
```

## Error Handling

| Error | Cause | Solution |
|-------|-------|----------|
| `datasource not found` | Datasource not created | Run `adddatasource` first |
| No search results | Indexing not yet complete | Wait 1-2 minutes for processing |
| `invalid document` | Missing required fields | Include `id`, `title`, `url` |

## Examples

Index two fictional records into `sandbox-onboarding`, search for `sample-policy`, then record `indexed=2; allowed_probe=1; denied_probe=0; cleanup=complete`. This demonstrates the boundary without retaining company content.

## Resources

- [Indexing API Overview](https://developers.glean.com/api-info/indexing/getting-started/overview)
- [Search API](https://developers.glean.com/api/client-api/search/search)
- [Index Documents](https://developers.glean.com/api/indexing-api/index-documents)

## Next Steps

Proceed to `glean-local-dev-loop` for development workflow setup.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.