Using ChatGPT & Others

Claude Code is our recommended tool, but nothing about ARK products requires it. You can customize an ARK repo with ChatGPT, Cursor, Windsurf, Copilot, Codeium, Cody, or any other AI assistant. The codebase was designed to be legible to humans and models, not to any one vendor.

This page covers the workflow for using a non-Claude-Code AI tool. If you already have a preferred setup, skim the "Which files to share" section and you're most of the way there.

Picking a tool

A rough taxonomy of what's out there and how ARK repos fit each:

ToolCategoryFit for ARK
Claude CodeTerminal agentBest — CLAUDE.md is tuned for it
CursorIDE (VS Code fork)Excellent — reads CLAUDE.md as context, has agent mode
WindsurfIDE (VS Code fork)Excellent — agent mode with full repo indexing
GitHub CopilotIDE pluginGood for small edits, weaker on multi-file reasoning
ChatGPT (web)ChatWorks, but you copy-paste files in and diffs out
Claude.ai (web)ChatSame as ChatGPT — fine for small asks, tedious for features
Codeium / Cody / ContinueIDE pluginWorks, feature parity varies by tool

The key differentiator is whether the tool can read files directly from your repo vs. only see what you paste into a chat box. Tools in the former category (Claude Code, Cursor, Windsurf) handle multi-file changes well. Tools in the latter category (ChatGPT, Claude.ai web) need more manual context.

Workflow A: Agent-style tools (Cursor, Windsurf, etc.)

These tools index your repo and operate on it like Claude Code does. The setup is similar:

1. Open the repo in the tool

In Cursor or Windsurf, File → Open Folder on your cloned ARK repo.

2. Point the tool at CLAUDE.md

Both Cursor and Windsurf honor CLAUDE.md (and .cursor/rules/ or .windsurfrules) as a system-prompt-like context. To be safe, at the start of a session:

Read CLAUDE.md in the repo root. Those rules apply to everything we do in this session. Confirm you've read them before we start.

The tool will summarize the rules back to you. If it doesn't reference ARK-specific conventions (like "don't touch src/lib/license.js"), try again and point it at the file explicitly.

3. Work feature-by-feature

Same flow as Claude Code — describe the change, ask for a plan, review, let the tool implement, test locally, commit.

Workflow B: Chat-style tools (ChatGPT, Claude.ai web)

Chat-style tools don't read your repo. You paste files in, you get suggestions back, you paste them into your editor. It's more manual but perfectly workable for targeted changes.

1. Start the chat with the guardrails

Paste the full contents of CLAUDE.md into the chat as your first message, prefixed with something like:

I'm going to customize an ARK product. The rules below come from the repo's CLAUDE.md — follow them on every suggestion. After reading, just say "understood" and wait for my request.

Don't skip this. Without CLAUDE.md, the model doesn't know which files are off-limits or which conventions exist, and you'll get suggestions that fight the codebase.

2. Share the files the task actually touches

For each change, figure out which files are relevant and paste them in. See Which Files to Share for a per-product file map.

A typical "add a new field to a Track contact" chat would include:

  • CLAUDE.md (already pasted)
  • supabase/schema.sql (or the relevant table section)
  • src/features/contacts/ContactForm.tsx
  • src/features/contacts/ContactDetail.tsx
  • src/features/contacts/types.ts

Paste each with a clear filename header:

--- src/features/contacts/ContactForm.tsx ---
<file contents>

--- src/features/contacts/ContactDetail.tsx ---
<file contents>

Models read these headers and reason about the files as a set.

3. Describe the change

Be specific. See Best Practices for how to phrase requests. A good template:

In this Track deployment, add a priority field to contacts.

  • Integer 1–5, default 3
  • Shown on the contact detail page as a star rating (1 star to 5 stars, filled based on the value)
  • Editable from the contact form

Give me:

  1. The migration SQL
  2. The updated ContactForm.tsx
  3. The updated ContactDetail.tsx
  4. Any new file I need (e.g., a StarRating component)

Don't change anything I didn't ask about. Don't touch src/lib/license.js.

4. Apply the changes manually

The chat returns code blocks. You:

  1. Copy each code block.
  2. Paste it into your editor, replacing the relevant file.
  3. Create any new files the model suggested.
  4. Save, run npm run dev, and test.
  5. Fix anything that breaks (either yourself or by pasting the error back into the chat).

5. Keep the chat open for follow-ups

If something breaks, don't start a new chat — paste the error message back into the same one:

I applied the migration and now npm run dev fails with:

Error: Property 'priority' does not exist on type 'Contact'
  at src/features/contacts/ContactList.tsx:42

What did I miss?

The model has the context from earlier messages and can usually spot what you forgot.

Giving good instructions to any AI

The same prompting principles apply across tools:

Be specific about the file

Bad:

Add a priority field to contacts.

Better:

In src/features/contacts/, add a priority field (integer 1–5) to contacts. Show it on the contact detail page. Don't change database column names that already exist.

Be specific about the data

Bad:

Add health scores to companies.

Better:

Add a health_score integer column (0–100) to the companies table via a migration. Compute it nightly via an Edge Function based on: days since last activity, open tasks count, total deal value. The weighting should be configurable via three workspace settings called health_weight_recency, health_weight_tasks, health_weight_deals (each a float 0–1 defaulting to 0.33).

Tell it what not to do

At the top of a tricky request:

Don't:

  • Modify src/lib/license.js
  • Remove or rename any existing database columns
  • Disable RLS on any table
  • Touch anything in supabase/functions/auth-webhook/

Explicit negatives are surprisingly effective at keeping AI tools from "helpfully" refactoring things you didn't ask about.

Ask for a plan before code

For anything that touches more than two files:

Before you write code, give me a plan: which files you'll touch, what changes in each, and any migrations. I'll confirm before you proceed.

This catches wrong-file, wrong-column mistakes before they become diffs you have to undo.

Comparing tools: a practical view

We've found the following patterns hold across most ARK customization work:

  • Multi-file features (new field end-to-end, new integration): agent tools (Claude Code, Cursor, Windsurf) are worth the setup.
  • Single-file tweaks (a bug fix, a copy change, a new CSS variable): any tool works, IDE plugins feel fastest.
  • Exploratory "show me how X works": chat tools (ChatGPT, Claude.ai) with pasted files work well because you can read along.
  • "Refactor everything"-style asks: no AI is reliable here. Don't do this.

Use what you have. If you don't already have a preferred tool, start with Claude Code — it's the path the rest of this section is written for.

Where to go next