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:
| Tool | Category | Fit for ARK |
|---|---|---|
| Claude Code | Terminal agent | Best — CLAUDE.md is tuned for it |
| Cursor | IDE (VS Code fork) | Excellent — reads CLAUDE.md as context, has agent mode |
| Windsurf | IDE (VS Code fork) | Excellent — agent mode with full repo indexing |
| GitHub Copilot | IDE plugin | Good for small edits, weaker on multi-file reasoning |
| ChatGPT (web) | Chat | Works, but you copy-paste files in and diffs out |
| Claude.ai (web) | Chat | Same as ChatGPT — fine for small asks, tedious for features |
| Codeium / Cody / Continue | IDE plugin | Works, 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.mdin 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.tsxsrc/features/contacts/ContactDetail.tsxsrc/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
priorityfield 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:
- The migration SQL
- The updated
ContactForm.tsx- The updated
ContactDetail.tsx- Any new file I need (e.g., a
StarRatingcomponent)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:
- Copy each code block.
- Paste it into your editor, replacing the relevant file.
- Create any new files the model suggested.
- Save, run
npm run dev, and test. - 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 devfails with:Error: Property 'priority' does not exist on type 'Contact' at src/features/contacts/ContactList.tsx:42What 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_scoreinteger column (0–100) to thecompaniestable 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 calledhealth_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
- Which Files to Share — per-product file map so you know what to paste in for a given task
- Example Modifications — six concrete walkthroughs; the file lists double as "what to share"
- Best Practices — prompting habits that work across tools