Charlie + Bear: Your Mission, Your Tools, Your Operating Loop
Read this end to end before your first 1:1. This is the half you both share. Charlie has her own page. Bear has his.
01Where you are
A 60 second briefing on the company you just walked into.
Next Chapter is a boutique M&A advisory firm. We help midmarket business owners in home services (plumbing, HVAC, roofing, pest control) sell their companies.
The deal makers:
| Person | Role |
|---|---|
| Ewing Gillaspy | Managing Partner. Built sales orgs at scale (Topia, IBM, SmartRecruiters) before this. Closes deals, designs the system, runs the GTM motion. |
| Mark DeChant | Sales leader turned operator turned deal maker. His reps earned 250+ Presidents' Clubs. Now he runs the daily pipeline across all three brands and closes the engagements he sources. |
| John Kelly | Founding partner. Led a global field org through M&A at Findly. Built our calling discipline. Closes deals he opens. Operator and seller in one seat. |
02What's been tried
You're walking into months of accumulated work. Don't propose what's already been tried.
The retired
- Old Supabase project
rdnnhxhohwjucvjwbwchwas retired April 2026 after 74,021 rows were archived. Never write there. Canonical Supabase isdwrnfpjcvydhmhnvyzov. - Lob direct mail integration was abandoned mid project after costly undeliverables. Letter generation still exists in
engine/contacts/but the send path is paused. If anyone says "ship a letter," check with Ewing. - Repos consolidated May 2026 from 4 down to 1. If you find references to
next-chapter-deals,claude-skills,next-chapter-brain, ornext-chapter-contacts, those are archived. This repo (next-chapter-os) is the only place to clone.
The hard rules earned in blood
- 250/150 governor: max 250 letters per batch. Hard stop until 150 contacts have been called 5 times each. Built after we burned cash on letters with no follow up.
- DNC is universal: one block is blocked everywhere. All entities. All channels.
- Letters before calls: mail sends first, enrichment is post letter. Reverse the order and you waste enrichment dollars on cold contacts.
- Multi LLM consensus required before customer facing documents. One model is not enough for a letter that goes to a CEO.
The recent rebuilds
- Old
campaignstable (21 production rows of letter campaigns) was preserved when we built the newoutreach_campaignstable. Don't confuse them. Letter campaigns belong in the old table. Pipeline campaigns belong in the new one. - Promote to deal contract was just formalized.
src/lib/handoff.tsdefinesHandoffPayload,isPromotable(), andpromotionDecision(). Score 50+ auto promotes. 30 to 49 enters a review queue. Below 30 skips. - Master cost table (
spend_log) replaced the old per service ledgers. Every dollar spent gets tied tocompany_id,contact_id,campaign_id,deal_id, plus model, tool, source_type, and pricing_model. - Stuck detector just shipped. The system watches your
feature_metricsevents. If you loop on the same action, spin without progress, or go idle for hours, it pings Ewing automatically.
03How we build at Next Chapter
The philosophy. Print this on a card.
- We build systems of features, not features that sit idle. A feature without a loop is decoration.
- We build small. Ship early. Test on ourselves before showing experts. Their time is rare.
- Every feature has a registered definition before code is written. If it's not in
src/lib/features/defs/, it doesn't exist. - Every API mutation is gated by
canUse()and metric'd. No exceptions, even for one off internal tools. - Every dollar spent goes through
circuit-breaker.ts. If you call a paid API outside the breaker, you create a budget incident. - Every credential comes from Doppler. Project
clawdbot, configsdevandprd. Never hardcode. Never use.env. Never copy paste a key. - Every deliverable an expert reads is HTML with inline CSS. Markdown is fine for code. HTML is fine for humans.
- Every assumption gets verified by reading the file. Don't guess. Don't paraphrase. Read.
04The Loop
The discipline that separates "I built a thing" from "we shipped a feature."
Five phases. None are optional. Skipping one is the most common failure mode in this organization.
Why this loop self sustains: each phase produces the input for the next. Plan produces a spec. Build produces an artifact. Test produces a confidence level. Feedback produces a delta. Iterate produces the next plan. If a phase is empty, the next phase has nothing to consume and you're spinning.
Skipping the loop looks like:
- Skip plan: "I'll just start coding." You will rebuild the same thing 4 times.
- Skip test: "It looks right." Mark opens the page and it crashes.
- Skip feedback: "I'll show them when it's perfect." It will never be perfect. Show them at 60 percent and refine.
- Skip iterate: "They had feedback but I disagreed." Then you didn't actually use the feedback.
05Plan first
10 minutes of planning saves 2 hours of building.
Before you write a single line of code, do this:
- Read the file. Open the source you'll modify. Read it. All of it. If it's long, read the part you're touching plus 30 lines on either side.
- Verify the schema. Run a query like
?limit=1&select=*on the table you'll write to. Confirm the columns exist. Confirm the types match what you think they are. - Sketch the loop. What triggers your feature? What work does it do? What downstream consumer reads its output?
- Identify the feature def. Does
src/lib/features/defs/<page>.tsalready have an entry? If not, register one atstatus: 'design'before writing code. - Identify missing API routes. If your UI needs a route that doesn't exist, list it. Don't write to Supabase from the browser. Ever.
- Estimate cost. How many file reads? How many edits? Will you call any paid APIs? If so, check
circuit-breaker.tsfor the threshold.
Write the plan into the conversation with Claude Code before asking it to build. The plan IS the prompt.
06Build with Claude Code
Claude Code is your pair programmer. Treat it like one.
- One feature per conversation. When you finish a feature, start a new chat. Long chats accumulate context that becomes noise.
- Paste error messages verbatim. Never paraphrase. Errors include line numbers and stack traces that matter.
- Read first, ask second. "Read
src/app/meetings/page.tsxthen tell me how classification is wired up" beats "how does classification work?" - Invoke skills. Use
/<skill-name>to call battle tested skills instead of reinventing. The skill list is at section 13. - The pre commit hook is your friend. It blocks em dashes, key patterns, and naming drift. If it complains, fix it. Don't
--no-verify. - Doppler handles credentials. Every script you run that needs an API key runs as
doppler run --project clawdbot --config dev -- <command>. You will never need to find or paste a key. If you ever feel like you need to ask someone for a credential, stop and re read this rule.
Token economics
Claude Code costs money per token. Cheap rituals that save tokens:
- Tell Claude exactly which file to read instead of letting it search.
- Use
/audit-qualityto lint output before submitting, not after. - If you've made 5 attempts at the same problem, stop and rephrase. You're not getting closer.
- Use background agents for research that doesn't need to be in your immediate context.
For the full model selection guide, see Section 07.
07Pick the right model
Three brains, three price tags, three jobs. Match them or burn money.
Claude Code gives you access to three models. They are not "good, better, best." They are different tools for different jobs, the way a hammer, a screwdriver, and a level are different tools. Using Opus to search a file is like using a level to drive a nail. It will work. It will cost five times more. And you will learn nothing from the experience except that you wasted money.
The three models
Fast. Cheap. Disposable. Use it to look things up, read files, search code, check schemas. It finds information. It does not make decisions.
The default. Writes code, fixes bugs, builds features, follows patterns. 80% of your work happens here. If you are not sure which model to use, the answer is Sonnet.
Expensive. Powerful. Thinks deeply about problems where the answer is not obvious. Use it when you need to design, not build. When you need to understand why, not just what.
The 10-second decision
Before every Claude Code session, ask yourself one question:
| Word | Model | Relative cost | When to use |
|---|---|---|---|
| LOOKUP | Haiku | 1x | You already know which file. You need content extracted or summarized. No code is produced. |
| BUILD | Sonnet | ~4x | You know what to build. You need code written, modified, or fixed. The pattern exists somewhere in the codebase. |
| DESIGN | Opus | ~19x | You do not know what to build, or where it should live, or why the thing you already built is not working despite 3 attempts. |
Three litmus tests:
- "Can I answer this by reading one file?" — LOOKUP (Haiku)
- "Can I describe the output I want in one sentence?" — BUILD (Sonnet)
- "I need to describe the problem, not the solution." — DESIGN (Opus)
How to switch models
In Claude Code, type /model and select the model you want. You can switch mid-session, but it is usually better to start a new session at the right model. Here are the model IDs:
/model claude-haiku-4-5-20251001 # Scout — lookups, file reads, grep
/model claude-sonnet-4-6 # Builder — features, bugs, API routes
/model claude-opus-4-7 # Architect — design, novel debugging
Your tasks, mapped to models
Every task you will do in your first month falls into one of these buckets. This is not a suggestion. This is the guide.
HAIKU tasks LOOKUP
| Task | Why Haiku | Example prompt |
|---|---|---|
| Searching or reading files | Pure retrieval, no reasoning | "Read src/lib/features/defs/meetings.ts and list the intern-tier features" |
| Grepping for patterns | Text matching, not judgment | "Find all files that import circuit-breaker.ts" |
| Git operations | Status, log, diff are mechanical | "Show me the last 10 commits on this branch" |
| Looking up schema columns | Read a table structure, report back | "What columns does meeting_notes have?" |
| Reviewing commit history | Summarizing what changed | "What changed in the last 3 commits to handoff.ts?" |
| Checking if a feature def exists | Pure lookup in the registry | "Does meetings.classify exist in the defs?" |
SONNET tasks BUILD
| Task | Why Sonnet | Example from your work |
|---|---|---|
| Writing components, CSS tweaks | Code generation, well-scoped | Adding a filter dropdown to the meetings list |
| Building features across files | Coordination, but the pattern exists | Wiring deals.reject-warm-lead UI to the API route |
| Fixing bugs with error messages | Stack trace says where, Sonnet applies the fix | "TypeError at handoff.ts:45" |
| Writing API routes | Convention is established, follow it | New route at /api/deals/reject-lead |
| Classifying meetings (Charlie) | Pattern is known, intern-tier feature | Setting classification to deal, voicemail, no_answer |
| Deal math validation (Bear) | Arithmetic + schema, not novel reasoning | Verifying EBITDA * multiple = EV |
| Creating feature definitions | Structured TypeScript with a known shape | Adding a new entry to meetings.ts |
| Drafting follow-up emails | Template-guided generation | Using a template + prospect context for a draft |
Running /audit-quality | Skill has its own instructions | Pre-submit quality check |
Running /auto-fix | Diagnostic with a known pattern | "Something broke after my last commit" |
| Reading unfamiliar code | Summarizing + explaining | "Explain how promotionDecision() works" |
OPUS tasks DESIGN
| Task | Why Opus | Example from your work |
|---|---|---|
| Novel debugging (no stack trace) | Deep reasoning, no clear starting point | "Classifications disappear after 2 seconds and I have no idea why" |
| Architecture decisions | Cross-system reasoning about the right home | "Should this be a cron in engine/, an API route, or a client timer?" |
Running /architect | The skill is designed for structural decisions | "Where does the DNC check belong?" |
| Multi-file refactoring | Restructuring, not just editing | "Classification logic is in 4 files and they disagree" |
| Cross-domain design | Reasoning across Charlie and Bear's systems | "What fields should Bear's rejection include for Charlie?" |
| First encounter with a complex subsystem | Design intent, not just code | "Explain the design decisions behind stuck-detector.ts" |
The napkin math
10 Haiku sessions ≈ 1 Sonnet session (in dollar terms)
5 Sonnet sessions ≈ 1 Opus session
50 Haiku sessions ≈ 1 Opus session
This means: be liberal with Haiku. 30 Haiku lookups in a day costs less than 3 Sonnet prompts. Do not try to squeeze a BUILD task into Haiku to save money — you will waste more tokens on failed attempts than you save. And do not avoid Opus when you genuinely need it — 45 minutes of Sonnet flailing can cost more than one Opus call, plus you lose the 45 minutes.
Session discipline
How you structure your Claude Code sessions determines how much they cost. Every message you send includes all the accumulated context from the conversation. A 40-message session means message 40 carries the weight of messages 1 through 39. This is why long sessions get expensive.
- One feature, one conversation. When you finish, close the chat. Start fresh. This is already in Section 06. Now you know why it matters economically.
- Start with the plan, not the code. Your first message should be the plan from Section 05. Tell Claude what you are building, which files are involved, what the output looks like. This front-loads the right context and prevents Claude from reading files you do not need.
- Tell Claude which files to read.
"Read src/lib/handoff.ts and explain promotion"costs a fraction of"How does promotion work?"— the second makes Claude search, read wrong files, and accumulate junk context. - Use
/compactwhen context grows. If your conversation exceeds 20 exchanges, use/compactto summarize and compress. This directly reduces cost for every subsequent message. - Five attempts, then change strategy. If the same fix has not worked after 5 tries, do one of three things:
- Rephrase the problem completely (maybe your description is misleading Claude).
- Upgrade the model (if you are on Sonnet, try Opus for diagnosis only).
- Close the session and start fresh with a different approach.
- Separate research from execution. If you need to understand an unfamiliar subsystem before building in it, do the research in a separate Haiku session. Read the files, take notes, close it. Then open a new BUILD session with only the relevant context.
- Background agents for research. If you need to understand something that does not block your current task, spin it off to a background agent. Keeps your primary context clean and cheap.
The upgrade ladder
You will sometimes start a task at the wrong model tier. That is normal. Here is how to escalate:
When the stuck detector fires and what it means for model choice
| Stuck pattern | What the detector sees | Model implication |
|---|---|---|
| Looping | 5+ failures in 30 min | You are probably on Sonnet trying to solve a DESIGN problem. Upgrade to Opus for diagnosis. |
| Spinning | 20+ events in 10 min | Not a model problem. Stop. Re-read the file. Restart the session. |
| Failing | 10+ invokes, 0 success | Something foundational is wrong. Use Opus to find the root cause, then return to Sonnet. |
| Long idle | 2+ hours silent | Not a model issue. Pick up or escalate. |
| Repeated rejection | 3+ permission denials | Not a model issue. You are hitting an operator-tier feature. Create a task instead. |
The Opus justification
When you use Opus, you should be able to state the reason in one sentence. Not logged formally — this is a mental discipline, not bureaucracy.
Good reasons:
- "Classifications vanish after 2 seconds and I have no stack trace."
- "I need to design the rejection feedback loop between meetings and deals."
- "The architecture question is which canonical home this belongs in."
Bad reasons:
- "I wanted to be thorough." — Sonnet is thorough enough for BUILD tasks.
- "The task felt important." — Importance does not determine model. Complexity does.
- "I always use Opus." — Then you are overspending on every LOOKUP and BUILD task.
Skills and model choice
Skills like /architect, /audit-quality, and /auto-fix handle their own internal model preferences. Your model choice applies to the Claude Code session that invokes the skill, not to the skill itself.
| Skill | Natural task type | Your session model |
|---|---|---|
/architect | DESIGN | Opus — structural decisions are what Opus is for |
/audit-quality | BUILD / verify | Sonnet — following a known checklist |
/auto-fix | BUILD → DESIGN if stuck | Sonnet first, Opus if it cannot find root cause |
/data-architect | DESIGN | Opus — schema decisions persist forever |
/connectors | LOOKUP | Haiku — registry lookup |
Expanding the skill library
Skills are not read-only. If you find yourself doing the same sequence of steps three or more times, it should become a skill. The rule:
- Notice the pattern. You have run the same 4-step process three times this week.
- Propose it. Create a task at
/review/tasksdescribing what the skill would do, what triggers it, and what it produces. - Wait for approval. Skill creation is an operator-tier action. Ewing or Mark will review your proposal.
- Build it. Once approved, use
/skill-creatorto scaffold the skill. Follow the existing pattern inskills/— every skill has aSKILL.mdthat explains triggers, inputs, and outputs.
Do not build skills unsupervised. A bad skill that fires on the wrong trigger can cause more damage than the manual process it replaced. Propose first, build second.
08Test before experts
The hardest discipline. Skip it once and you'll skip it forever.
Test patterns
| Pattern | What you check | How |
|---|---|---|
| Smoke test | The page loads | Hit the URL. Does anything render? Are there console errors? |
| Happy path | The main user flow works | Run through the action you just built end to end. |
| Empty data | Page renders when data is missing | Filter to a date with no results. Does it crash or render gracefully? |
| Permission test | Wrong tier is blocked | Set your identity to charlie and hit an admin endpoint. Should return 403. |
| Metric test | The action recorded | Query feature_metrics for your action. Should be there with the right actor. |
| Spend test | The cost was captured | If you called a paid API, query spend_log. Should have the right cost, model, and source. |
| Loop test | The downstream consumer sees your output | Trigger your feature. Verify the next thing in the chain reads it correctly. |
How to know you're done testing
You're done when:
npx tsc --noEmitpasses with zero errors.- You can describe what your feature does, what it doesn't do, and one edge case where it might fail.
- You've personally clicked through the happy path twice.
- You've checked
feature_metricsand confirmed the action recorded. - If a paid API was involved, you've checked
spend_log.
Only then do you put it in front of an expert.
09Expert feedback
Mark, John, and Ewing are your users. They will tell you what's broken. Your job is to listen, not defend.
Three feedback channels
- FeedbackBox on the page. Every feature you build gets a feedback box. The expert types a sentence. You read it the next morning.
- Weekly sync. Once you have something to show, you'll get 15 minutes a week with one of the experts. Show, don't tell. Let them click. Watch where they hesitate.
- Tickets. If something is broken in production, an
agent_ticketmay be created automatically. Check the queue.
How to receive feedback well
- Don't argue. Note it. Decide later.
- If you don't understand the feedback, ask one clarifying question. Then stop.
- If they say "this is wrong," your job is "what would right look like?" not "let me explain why I built it this way."
- Within 24 hours, write up the feedback in the feature's commit history or in a notebook entry.
10Iterate
Every iteration tightens the spec.
Take the feedback. Restart the loop. Plan the change. Build it. Test it. Show them again.
Every iteration produces:
- A tighter feature def (the description gets sharper)
- A better understanding of the user (the expert is teaching you their job)
- One question for the next session ("you said X, did you mean Y?")
The loop never ends. Mature features still iterate. The day you stop iterating is the day the feature starts decaying.
11Your six input sessions
The most valuable 30 minutes you'll have for the next month. Each.
You each get three 30 minute Zooms with the experts:
| Charlie | Bear |
|---|---|
| Charlie : John | Bear : John |
| Charlie : Mark | Bear : Mark |
| Charlie : Ewing | Bear : Ewing |
Universal rules (every session)
- Read everything before the call. If you ask a question you could have answered by reading the docs, you've wasted a minute that you cannot get back.
- Have a goal. State it in the first 60 seconds. "Today I want to understand how you triage your morning queue."
- Don't ask "what should I build." Tell them what you're building. Ask if it solves their problem.
- Fireflies records the call. Transcript appears at
/meetings/<id>. You can rewatch yourself. - Within 24 hours, write up: three themes that came up, one thing that surprised you, one thing they want but didn't say.
Question categories that work for every session
- Day in the life. "Walk me through 7am, 10am, 3pm. Show me your screen if you can."
- Decisions you make. "What questions do you ask yourself before classifying a call?" "Before promoting a deal?" "Before calling a target?"
- Pain points. "Where do you waste time?" "What forces a context switch?" "What do you do twice that should be done once?"
- Stories of failure. "Tell me about a deal that died because of bad data, bad timing, or a bad handoff."
- Stories of wins. "Tell me about a deal that closed because something worked perfectly."
- The judgment call. "Where would you never trust software to make the call?"
- "What's a deal?" (read the docs)
- "Can I have your API keys?" (Doppler)
- "What should I build?" (you tell them, they react)
- Anything you could verify by querying the data
- Leading questions ("don't you think we should...?")
- Questions about whether they'll use the feature you built (they will tell you, you don't need to ask)
Per expert question banks tuned to John, Mark, and Ewing live in your individual onboarding doc. Open Charlie's package or Bear's package for the per session prep packs.
12A feature is a loop
If you remember one thing from this entire document, remember this section.
Examples of loops build these
- Charlie classifies a meeting → handoff contract evaluates → Bear gets a warm lead → Bear's pipeline forecast updates.
- Bear marks a deal stalled → ticket created → Mark gets a Slack alert → Mark calls the contact → activity log updates → forecast recalculates.
- Bear rejects a warm lead with a reason → Charlie reads the rejection → Charlie's classification approach adjusts → fewer bad leads enter the pipeline next week.
- Stuck detector observes 5 failed events → ticket created at Tier 1 → auto fix attempts a retry → if still stuck, escalates to Tier 3 → Ewing pings the intern.
Examples of decoration don't build these
- A counter on the page that nobody reads.
- A button that opens a modal that closes.
- A dashboard nobody opens unless asked.
- A "save my preferences" feature with no system that uses the preferences.
- An export to CSV button that nobody downloads.
Before you build, ask: what consumes my output? If the answer is "the user looks at it," that's fine if the user actually looks at it. If the answer is "another system reads it and does something useful," that's better.
13Skills that are your friends
68 skills are installed. These are the ones you'll use in your first month.
How to invoke: type /<skill-name> in Claude Code with arguments after.
Both of you, daily
| Skill | When to invoke |
|---|---|
/architect | When you're not sure where something belongs. Repo, table, file. Architect knows the canonical homes. |
/data-architect | When you're about to add a new column, table, or schema concept. Validates persistence design. |
/audit-quality | Before you say "done." Maker checker pass on your output. |
/auto-fix | When something is broken and you can't see the root cause. Watches recent changes for likely culprits. |
/connectors | When you need to know which API integration exists. Registry of every connector. |
Charlie's daily five
| Skill | When to invoke |
|---|---|
/cold-call-workflow | The cold call discipline. How calls flow from Salesfinity into the meetings page. |
/enrich-to-salesfinity | Pre call enrichment patterns. What to verify before a call. |
/exa-mastery | How to use Exa Websets without burning budget. |
/listener | When something feels off and you can't articulate why. Surfaces unstated intent. |
/maxswarm | When a question is bigger than one agent. Spins up a swarm of 11 to answer hard strategic questions. |
Bear's daily five
| Skill | When to invoke |
|---|---|
/deal-awareness-protocol | The deal lifecycle discipline. Stage transitions, financial fields, when to escalate. |
/buyside-hunt | How buyside research feeds the pipeline. What signals matter. |
/storyteller | When a deal page or report needs to read like a story, not a spreadsheet. |
/draper | The emotional layer. What does the deal feel like to the seller? |
/maxswarm | Same as Charlie. When you need 11 perspectives instead of 1. |
Browse the full list at skills/ in the repo. Each skill has a SKILL.md that explains what it does and when to use it.
14How you two collaborate
The handoff contract is your shared language. Use it.
The contract
- Charlie owes Bear: classified meetings within 24 hours of call. Promotions with complete
HandoffPayloaddata. Honest signal flags. - Bear owes Charlie: warm lead reviews within 48 hours. Rejections with reasons (the system enforces a 10 character minimum). Deal outcomes that inform Charlie's classification approach.
- Both owe each other: a clean spec when you ask for something. "Can you give me X" is not a spec. "I need X to look like Y because Z" is a spec.
How to disagree
- If Charlie classifies a meeting as a deal and Bear thinks it's not, Bear rejects with a reason. The rejection is the conversation.
- If you genuinely conflict on something the system can't resolve, escalate to Ewing. Don't workaround. Don't build duplicate code paths.
- Don't use Slack as a spec. Slack is for "are you stuck?" Spec lives in code (types, feature defs, API contracts).
Weekly ritual
Every Friday: each of you produces one piece of output the other relies on. Show it. Talk through it. Adjust before Monday. The system is designed so neither of you can succeed without the other being good. That's intentional.
15Failure modes
The stuck detector watches for these. If you hit one, a ticket is created. Treat the ticket as a signal, not a punishment.
| Pattern | What it means | What to do |
|---|---|---|
| Looping | 5+ failed events on the same feature in 30 minutes | Stop. Read the file. Try a fundamentally different approach. |
| Spinning | 20+ events in 10 minutes | You're clicking, not progressing. Walk away for 10 minutes. |
| Failing | 10+ invokes, 0 successes | Something fundamental is wrong. Read the error. Read the schema. Restart the conversation. |
| Long idle | Active for hours then silent for 2+ hours during work time | Pick up where you left off. If you're blocked, escalate. Don't disappear. |
| Repeated rejection | 3+ permission denials on the same feature | You're trying something out of scope. Create a task for the right tier. Don't try to bypass. |
16Quick reference
Keep this open in a tab.
Key files
CLAUDE.md | Project rules. Doppler. Intern rules. Feature system. |
src/lib/features/ | Feature registry. Defs, permissions, metrics. |
src/lib/handoff.ts | The Meetings to Deals contract. |
src/lib/circuit-breaker.ts | Budget gating before paid API calls. |
src/lib/tickets.ts | Incident tracking. Trigger patterns. |
src/lib/classifications.ts | The canonical meeting classifications. |
src/lib/deals.ts | Deal lifecycle. Stages. Transitions. |
src/lib/stuck-detector.ts | The thing watching whether you're stuck. |
Commands
doppler run --project clawdbot --config dev -- <cmd> | Run anything that needs credentials. |
npx tsc --noEmit | Type check before saying "done." |
npx next dev | Local dev server. |
git status | What's changed. |
git log -5 --oneline | Recent commits to see how others write commit messages. |
When you're stuck (in this order)
- Re read the relevant
CLAUDE.md. - Re read the feature def for what you're building.
- Re read this document, especially section 4 (the Loop) and section 11 (a feature is a loop).
- Invoke
/auto-fixwith the specific error you're seeing. - Create a task at
/review/tasks. - Ask in
#intern-helpon Slack. One channel, not DMs. - Last resort: page Ewing.
Your individual packages
Open the page that has your name on it:
- Charlie's package — first AI build, three expert session prep packs, recommended skills
- Bear's package — first AI build, three expert session prep packs, recommended skills