---
name: "ChatGPT Projects"
description: "Create and manage ChatGPT Projects via browser automation — create projects, set custom instructions, upload files/skills, start conversations within projects."
version: "1.0.0"
author: "skynet"
category: "dev"
agents: ["claude-code"]
tags: ["chatgpt", "projects", "browser-automation", "ai", "knowledge-management"]
tools_required: ["chrome-mcp"]
---

# ChatGPT Projects

# ChatGPT Projects

Create and manage ChatGPT Projects via browser automation. Projects give ChatGPT persistent context — custom instructions, uploaded files, and organized conversations.

## Prerequisites

- Chrome MCP browser tools available (mcp__claude-in-chrome__*)
- Logged in to chatgpt.com (James's account is pre-authenticated)

## Step 1: Navigate to ChatGPT

```
1. Create a new tab: mcp__claude-in-chrome__tabs_create_mcp
2. Navigate to: https://chatgpt.com
3. Read page to confirm you're on the home page
```

## Step 2: Create a New Project

Projects are in the sidebar under the "Projects" heading.

```
1. Read the sidebar — look for the "Projects" heading
2. Find and click the "+" or "Create project" button near the Projects heading
   - This is typically a button element right after the Projects header
3. A project creation dialog or inline editor will appear
4. Type the project name
5. Press Enter or click Create
```

## Step 3: Open the Project

After creation, navigate to the project page:

```
1. The project URL format is: chatgpt.com/g/g-p-<project-id>-<slug>/project
2. Click on the project name in the sidebar to open it
3. The project page shows: chat input, Chats tab, Sources tab
```

## Step 4: Set Project Instructions

Project instructions tell ChatGPT how to behave within this project.

```
1. On the project page, click "Show project details" button
   - Or click the project icon/settings area at the top
2. Look for an "Instructions" or "Custom instructions" text area
3. Use form_input to type or paste your instructions
4. Click Save or close the panel (auto-saves)
```

**Good project instructions include:**
- Role definition ("You are a content strategist for a pet blog")
- Tone and style guidelines
- Specific knowledge or context about the project
- Output format preferences
- Things to avoid

## Step 5: Upload Files to the Project

Upload reference files, skills, documentation, or data:

```
1. On the project page, click the "Sources" tab
2. Look for an upload button or drag-and-drop zone
3. Click "Add files and more" button, or the file upload area
4. Select files to upload
   - Supported: PDF, TXT, MD, CSV, JSON, images, code files
   - Max file size: ~50MB per file
5. Wait for upload to complete
```

**What to upload:**
- SKILL.md files for agent capabilities
- Project documentation or specs
- Brand guidelines or style guides
- Data files (CSV, JSON) for reference
- Code samples or architecture docs

## Step 6: Start a Conversation in the Project

```
1. On the project page, find the chat input (labeled "New chat in <Project Name>")
2. Type your message
3. Click Send or press Enter
4. The conversation will have access to all uploaded files and instructions
```

## Step 7: Collect the Project URL

Always save the project URL for reference:

```
1. The URL in the browser bar: chatgpt.com/g/g-p-<id>-<slug>/project
2. Save this URL — it's the permanent link to the project
3. Direct chat links within the project: chatgpt.com/g/g-p-<id>-<slug>/c/<chat-id>
```

## Managing Existing Projects

### List all projects
```
1. Open sidebar on chatgpt.com
2. Scroll to the "Projects" section
3. Read the project names and their sidebar links
```

### Open project options
```
1. Hover over a project in the sidebar
2. Click the "..." or "Open project options" button
3. Options include: rename, delete, share, archive
```

### Delete a project
```
1. Open project options (see above)
2. Click "Delete"
3. Confirm deletion
```

## Existing Projects Reference

Current projects on James's account:
- **Skill Builder** — builds SKILL.md files for the skills platform
- **Woman Freebies - Jessica Martinez** — agent project
- **Greater Sudbury - Marc Gauthier** — agent project
- **Campfire Stories - Darnell Washington** — agent project
- **Backyard Blog - Travis Kowalski** — agent project

## Tips

- Each project is isolated — instructions and files only apply within that project
- You can have multiple active conversations within one project
- Projects persist across sessions — use them for ongoing work
- The model selector works within projects — you can switch between GPT-4o, o1, etc.
- Upload SKILL.md files to teach ChatGPT specific capabilities for the project

<!-- test -->

## Browser Automation Tips

### Creating Projects
The "New project" button is in the sidebar under the "Projects" heading. You may need to scroll the sidebar to find it. Use JavaScript for reliable clicking:
```
// Find and click New project
const all = document.querySelectorAll('button, a, [role="button"]');
for (const el of all) {
  if (el.textContent.trim() === 'New project') { el.click(); break; }
}
```

### Project Name Input
The project name input in the "Create project" dialog IS a standard textbox. Use form_input:
```
1. Use find to locate "project name input field"
2. Use form_input to set the name
3. Use find to locate "Create project" button and click it
```

### Sidebar Navigation
The sidebar items are tightly spaced. Coordinate-based clicks often miss. Prefer:
- find + ref-based clicks for specific elements
- JavaScript clicks for elements that don't respond to MCP clicks

## Running on Mac Minis

These instructions can also be executed on the Mac Minis (bots, vault, jarvis) using the mac-control MCP server instead of chrome-in-chrome.

### Via mac-control MCP Server (Port 8200)

The mac-control server on each Mac exposes the same GUI automation primitives:

```bash
# Take a screenshot to see the screen
curl -s http://bots.local:8200/tools/screenshot

# Open a URL in Chrome
curl -s http://bots.local:8200/tools/open_url -d '{"url": "https://chatgpt.com"}'

# Click at screen coordinates
curl -s http://bots.local:8200/tools/click -d '{"x": 500, "y": 300}'

# Type text
curl -s http://bots.local:8200/tools/type_text -d '{"text": "Research the latest advances in..."}'

# Press keyboard shortcut
curl -s http://bots.local:8200/tools/key_press -d '{"keys": "return"}'

# Run AppleScript
curl -s http://bots.local:8200/tools/applescript -d '{"script": "tell app \\"Google Chrome\\" to activate"}'

# Find text on screen (OCR)
curl -s http://bots.local:8200/tools/find_on_screen -d '{"text": "Submit"}'
```

### Via Chrome DevTools Protocol (Port 9222)

For direct browser control without GUI coordinates:

```bash
# List open tabs
curl -s http://bots.local:9222/json

# Navigate a tab to a URL
curl -s http://bots.local:9222/json/new?https://chatgpt.com

# Execute JavaScript in a tab (via WebSocket — use a CDP client)
```

### Via SSH + cliclick (Simple Fallback)

```bash
# Open URL
ssh bots 'open https://chatgpt.com'

# Wait for page load
sleep 3

# Screenshot + analyze
ssh bots 'screencapture /tmp/screen.png'
scp bots:/tmp/screen.png ./screen.png

# Click at coordinates
ssh bots '/opt/homebrew/bin/cliclick c:500,300'

# Type text
ssh bots '/opt/homebrew/bin/cliclick t:"Research the latest advances in..."'

# Submit
ssh bots '/opt/homebrew/bin/cliclick kp:return'
```

### Recommended Machine

Use **bots** (192.168.86.50) for browser automation — it has full GUI support, screencapture works, and Chrome with remote debugging is running.
