Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
4c8b6da
Test MCP server
NavidZ Dec 19, 2025
5775176
Update wb mcp docs
NavidZ Jan 6, 2026
ee66002
Add more MCP tools
NavidZ Jan 12, 2026
290edff
Autoadd wb mcp to claude and gemini
NavidZ Jan 14, 2026
b1eb1dc
Add a new jupyter lab with llm tools
NavidZ Jan 14, 2026
5806fdd
Fix the gemini cli issue
NavidZ Jan 16, 2026
f704b3c
Add LLM Context Generator feature
aculotti-verily Feb 10, 2026
6527470
Update llm-context devcontainer feature
aculotti-verily Feb 11, 2026
9df069b
Integrate llm-context feature into app
aculotti-verily Feb 11, 2026
ccf7caf
Align llm-context feature with other feature patterns
aculotti-verily Feb 11, 2026
6c871a4
Fix feature paths - move symlinks to repo root .devcontainer/features/
aculotti-verily Feb 11, 2026
21c35cb
Fix bucket mounting and context generation timing
aculotti-verily Feb 11, 2026
d402ce8
Fix CLAUDE.md being created in wrong home directory
aculotti-verily Feb 11, 2026
d68b7e6
Fix: Use semicolon instead of && to ensure context script runs
aculotti-verily Feb 12, 2026
bdf72fb
Enhance CUSTOM_APP.md skill with comprehensive validation checklist
aculotti-verily Feb 12, 2026
98c6d2b
Move context generation to postCreateCommand (after auth)
aculotti-verily Feb 12, 2026
d68d455
Create stub CLAUDE.md during feature install (like wb-mcp-server)
aculotti-verily Feb 12, 2026
3a9c06c
Add LLM context generation to post-startup.sh (uses feature)
aculotti-verily Feb 12, 2026
c6baefe
Merge pull request #9 from NavidZ/llm-context-feature
NavidZ Feb 12, 2026
27c7b98
Add app templates and APP_TEMPLATES skill
aculotti-verily Feb 12, 2026
1307503
Add critical URL formatting guidance for Workbench apps
aculotti-verily Feb 18, 2026
4c7907c
Add workspace_list_data_collections MCP tool
aculotti-verily Feb 18, 2026
86eba95
Add dashboard serving guidance to CLAUDE.md and update CUSTOM_APP.md
aculotti-verily Feb 18, 2026
60d84a6
Fix MCP tool references and add workspace_list_data_collections two-s…
aculotti-verily Feb 19, 2026
2dad97c
Fix workspace_list_data_collections to use resolveWorkspaceId
aculotti-verily Feb 19, 2026
f106dc8
Fix workspace_list_data_collections: resourceLineage is an array insi…
aculotti-verily Feb 19, 2026
35f851e
Add explicit instructions to automatically get app UUID for URLs
aculotti-verily Feb 19, 2026
d8cb23b
Fix templates: remove broken Workbench-specific dependencies
aculotti-verily Feb 19, 2026
8057d2a
Add DASHBOARD_BUILDER skill for web apps & dashboards
aculotti-verily Feb 19, 2026
b76527d
Fix CUSTOM_APP.md skill with critical corrections
aculotti-verily Feb 19, 2026
29b2083
CRITICAL FIX: .devcontainer.json must be at repo ROOT
aculotti-verily Feb 19, 2026
3bc0deb
Update all CUSTOM_APP.md skills with correct .devcontainer.json place…
aculotti-verily Feb 19, 2026
77695f9
Comprehensive CUSTOM_APP.md update: Two patterns for stability
aculotti-verily Feb 19, 2026
d5cc8c8
Update CUSTOM_APP.md based on working examples analysis
aculotti-verily Feb 19, 2026
46a73f3
Fix: Ensure workspaceBaseURL is never empty
aculotti-verily Feb 20, 2026
10e22fe
Remove private repo references, use official repo only
aculotti-verily Feb 20, 2026
6b16473
Add VM troubleshooting section to CUSTOM_APP.md
aculotti-verily Feb 20, 2026
c37c732
Merge pull request #12 from NavidZ/llm-context-with-templates
aculotti-verily Feb 24, 2026
5791538
Make MCP tools more prominent in CLAUDE.md context
aculotti-verily Mar 2, 2026
ae7318f
Merge pull request #13 from NavidZ/llm-context-with-templates
aculotti-verily Mar 2, 2026
fa1d5e8
Add WORKFLOW_TROUBLESHOOT skill for debugging failed WDL workflows
aculotti-verily Mar 17, 2026
ac70887
Make WORKFLOW_TROUBLESHOOT proactive after job confirmation
aculotti-verily Mar 17, 2026
577ef62
Remove references to private templates repo
aculotti-verily Mar 17, 2026
ece493a
Add scientific skills for pharma/biotech research
aculotti-verily Mar 17, 2026
bd8ac9e
Rename SKILL_INDEX to SCIENTIFIC_SKILLS_INDEX, update skill routing
aculotti-verily Mar 17, 2026
c690924
Simplify CLAUDE.md template and skill files for clarity
aculotti-verily Mar 17, 2026
6419762
Reorganize CLAUDE.md: MCP tools to top, clean up Web Apps section, co…
aculotti-verily Mar 27, 2026
73be238
Merge pull request #14 from NavidZ/llm-context-with-templates
aculotti-verily Mar 27, 2026
bafc4fb
Expand MCP tools list, simplify Data Persistence and Proxy URL sections
aculotti-verily Mar 27, 2026
b449396
Streamline skill files: remove directives, duplicates, and redundant …
aculotti-verily Mar 27, 2026
abaedf9
Merge pull request #15 from NavidZ/llm-context-with-templates
aculotti-verily Mar 27, 2026
cadd198
Move context files to ~/.claude/ for native Claude Code auto-discovery
aculotti-verily Apr 2, 2026
be77c1a
Merge pull request #16 from NavidZ/llm-context-with-templates
aculotti-verily Apr 2, 2026
ef9fbde
Update CUSTOM_APP skill with proxy and path gotchas
aculotti-verily Apr 22, 2026
714639f
Merge pull request #17 from NavidZ/llm-context-with-templates
aculotti-verily Apr 22, 2026
1a994c8
Tighten WORKFLOW_TROUBLESHOOT behavior section
aculotti-verily Apr 23, 2026
5060ec7
Reformat behavior section as numbered list; add open-ended fallback t…
aculotti-verily Apr 23, 2026
164c144
Merge pull request #18 from NavidZ/llm-context-with-templates
aculotti-verily Apr 23, 2026
0a533e7
refine CLAUDE.md: fix headings, data collections, skills, remove dupl…
aculotti-verily Apr 27, 2026
66e7326
align APP_TEMPLATES.md with CUSTOM_APP.md best practices
aculotti-verily Apr 27, 2026
bb130b1
Merge pull request #19 from NavidZ/llm-context-with-templates
aculotti-verily Apr 28, 2026
71850de
Make mcp server run as a local host server and use http as transport …
NavidZ May 8, 2026
fae9a09
Merge pull request #20 from NavidZ/mcp-server-update
NavidZ May 8, 2026
734e937
Fix MCP auto-connect and reduce build time
aculotti-verily May 5, 2026
00f6d4d
Fix missing items field in array schema definitions
aculotti-verily May 5, 2026
41343de
feat(llm-context): add AWS platform detection and skill variants
aculotti-verily May 5, 2026
85585d4
fix(llm-context): correct AWS resource types, add Aurora, harden erro…
aculotti-verily May 5, 2026
2ccd732
fix: startup timing and jq robustness for AWS apps
aculotti-verily May 5, 2026
85a0e40
feat: AWS-specific CLAUDE.md for all platform-sensitive sections
aculotti-verily May 5, 2026
5e9f164
style: clean up informal comment in generate_bucket_list
aculotti-verily May 5, 2026
fab65be
fix: guarantee single valid JSON object from generate_embedded_json
aculotti-verily May 5, 2026
fba020e
fix: rewrite generate_embedded_json to avoid --argjson entirely
aculotti-verily May 5, 2026
674d97c
docs(aws): add IAM auth and SSL instructions for Aurora database access
aculotti-verily May 5, 2026
6d6f694
feat(mcp): add platform_list_data_collections tool for cross-workspac…
aculotti-verily May 11, 2026
d22009e
feat(mcp): enrich platform_list_data_collections with full terra prop…
aculotti-verily May 11, 2026
cc2362e
feat: add DATA_DISCOVERY skill and enrich platform_list_data_collecti…
aculotti-verily May 11, 2026
c9ccc5a
fix: tighten DATA_DISCOVERY skill triggers to platform-wide only
aculotti-verily May 11, 2026
9a2fbbf
fix: narrow DATA_DISCOVERY triggers to explicit platform-wide search …
aculotti-verily May 11, 2026
de7139e
fix: remove overly broad note from DATA_DISCOVERY skill
aculotti-verily May 11, 2026
196816d
Merge pull request #21 from NavidZ/llm-context-with-templates
aculotti-verily May 11, 2026
db9eace
fix: embed DATA_DISCOVERY.md as heredoc in generate-context.sh
aculotti-verily May 12, 2026
a2fb7af
Merge pull request #22 from NavidZ/llm-context-with-templates
aculotti-verily May 12, 2026
d0c2ba9
feat: add relevance ranking to DATA_DISCOVERY skill and strengthen tr…
aculotti-verily May 12, 2026
1afcf71
Merge pull request #23 from NavidZ/llm-context-with-templates
aculotti-verily May 12, 2026
5f9e619
fix(mcp): replace N+1 API calls with single batch lookup in workspace…
aculotti-verily May 13, 2026
b1dc5ea
Merge pull request #25 from NavidZ/llm-context-with-templates
aculotti-verily May 13, 2026
ff1a300
fix(mcp): cache workspace UUID at startup to eliminate runtime resolv…
aculotti-verily May 14, 2026
a3e64ed
Merge remote-tracking branch 'origin/mcp-app-filtered' into mcp-app
pantherman594 May 14, 2026
b64d5c0
Update devcontainer to match jupyter app
pantherman594 May 13, 2026
c8937c9
shellcheck
pantherman594 May 13, 2026
0047eda
Tests
pantherman594 May 13, 2026
e191024
fix: harden MCP server, deduplicate skills, fix docs and install scripts
pantherman594 May 13, 2026
77da25e
vscode-with-llm
pantherman594 May 13, 2026
1571e53
Reference local templates directory
pantherman594 May 14, 2026
fd1595d
fix(mcp): resolve workspace UUID correctly at startup using userFacingId
aculotti-verily May 14, 2026
c41a6ce
fix: robust 3-layer workspace UUID resolution for workspace_list_data…
aculotti-verily May 14, 2026
34bc5bc
Merge pull request #27 from NavidZ/llm-context-with-templates
aculotti-verily May 14, 2026
3fc9cd6
Remove unused variable
pantherman594 May 14, 2026
71827c1
Merge remote-tracking branch 'origin/mcp-app-filtered' into mcp-app
pantherman594 May 14, 2026
e315686
shellcheck
pantherman594 May 14, 2026
bc56c3d
Use run-context-generator.sh instead of generate-context.sh to wait f…
pantherman594 May 15, 2026
f007575
Fix MCP server installation
pantherman594 May 15, 2026
5e468af
Run MCP server as user
pantherman594 May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/test-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,15 @@ jobs:
- 'features/src/postgres-client/**'
- 'src/aou-common/**'
- 'src/nemo_jupyter/**'
workbench-jupyter-with-llm:
maximize_build_space: true
filters:
- 'features/src/workbench-tools/**'
- 'features/src/postgres-client/**'
- 'features/src/llm-context/**'
- 'features/src/wb-mcp-server/**'
- 'features/src/gemini-cli/**'
- 'src/jupyter-common/**'
workbench-jupyter-parabricks:
maximize_build_space: true
filters:
Expand Down
131 changes: 131 additions & 0 deletions features/src/llm-context/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# LLM Context Generator (llm-context)

Generates `~/CLAUDE.md` context file for LLMs (Claude Code, Gemini CLI, etc.) with Workbench workspace information. Claude Code auto-discovers this file on startup.

## Example Usage

```json
"features": {
"ghcr.io/verily-src/workbench-app-devcontainers/llm-context:1": {
"username": "jupyter",
"userHomeDir": "/home/jupyter"
}
}
```

Or for local development:

```json
"features": {
"./.devcontainer/features/llm-context": {
"username": "jupyter",
"userHomeDir": "/home/jupyter"
}
}
```

## Options

| Options Id | Description | Type | Default Value |
|-----|-----|-----|-----|
| username | Username of the container user | string | root |
| userHomeDir | Home directory of the container user | string | /root |

## What It Does

When installed, this feature:

1. **Generates `~/CLAUDE.md`** - Claude Code auto-discovers this file on startup
2. **Provides workspace context** - Name, ID, role, resources, cloud paths
3. **Includes skill files** - Detailed guides (e.g., custom app creation) in `~/.claude/skills/`
4. **Sets up aliases** - `generate-llm-context`, `refresh-context`

## What's in `~/CLAUDE.md`

- **Quick Rules** - When to use this file vs. MCP/CLI
- **Current Workspace** - Name, ID, description, role, cloud platform
- **Resource Paths** - JSON lookup for all resources (GCS, BigQuery, etc.)
- **Data Persistence** - Warning + save commands
- **Data Exploration** - Common BigQuery/GCS commands
- **MCP Tools** - Available tools and CLI equivalents
- **Skills** - Links to detailed guides

## When Context Gets Generated

1. **Automatically on app start** - Via `postStartCommand` (after bucket mounting completes)
2. **Manually** - Run `generate-llm-context` or `refresh-context`

**Important**: Add the context generation to your `postStartCommand` in `.devcontainer.json`:

```json
"postStartCommand": [
"bash",
"-c",
"./startupscript/remount-on-restart.sh jupyter /home/jupyter \"${templateOption:cloud}\" \"${templateOption:login}\" && /opt/llm-context/generate-context.sh /home/jupyter"
]
```

**Note**: Pass the user home directory (e.g., `/home/jupyter`) as an argument because `postStartCommand` runs as root, not as the container user.

This ensures context is generated AFTER authentication and workspace setup complete.

## MCP Integration

This feature works well alongside the `wb-mcp-server` feature:
- **`llm-context`** provides static context (workspace info, resource paths)
- **`wb-mcp-server`** provides dynamic tools (search, create, modify)

For optimal LLM experience, use both:

```json
"features": {
"./.devcontainer/features/llm-context": {},
"./.devcontainer/features/wb-mcp-server": {}
}
```

## Troubleshooting

### Context not generating?

```bash
# Check if workspace is set
wb workspace describe

# If not authenticated:
wb auth login --mode=APP_DEFAULT_CREDENTIALS
wb workspace set <workspace-id>

# Then generate manually:
generate-llm-context
```

### Claude Code not seeing context?

```bash
# Check file exists
ls -la ~/CLAUDE.md

# Check it's not empty
head ~/CLAUDE.md
```

## File Locations

| File | Purpose |
|------|---------|
| `/opt/llm-context/generate-context.sh` | Main generation script |
| `/opt/llm-context/run-context-generator.sh` | Auto-run wrapper |
| `~/.claude/CLAUDE.md` | Generated context (primary) |
| `~/CLAUDE.md` | Symlink for auto-discovery |
| `~/.claude/skills/` | Skill files (e.g., CUSTOM_APP.md) |

## Notes

- This feature requires the Workbench CLI (`wb`) to be installed
- `jq` is automatically installed if not present
- Context is only generated if a workspace is set (`wb workspace describe` succeeds)

---

_Note: This feature is automatically configured to work with the `wb-mcp-server` feature if both are installed._
22 changes: 22 additions & 0 deletions features/src/llm-context/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"id": "llm-context",
"version": "1.2.0",
"name": "LLM Context Generator",
"description": "Generates ~/CLAUDE.md context file for LLMs (Claude Code, Gemini, etc.) with Workbench workspace information. Claude Code auto-discovers this file on startup.",
"options": {
"username": {
"type": "string",
"default": "root",
"description": "Username of the container user."
},
"userHomeDir": {
"type": "string",
"default": "/root",
"description": "Home directory of the container user."
}
},
"installsAfter": [
"ghcr.io/devcontainers/features/common-utils",
"./.devcontainer/features/workbench-tools"
]
}
Loading
Loading