Claude Code Workshop

Tips, Tricks & Team Workflows

584+ conversations migrated
3 years of ChatGPT history
15 plugins configured
8 memory files generated

tradeit.gg Engineering • 2026

Interface & Shortcuts LIVE DEMO

Essential Shortcuts

  • Shift+Enter — multiline input
  • Shift+Tab — toggle plan mode
  • Esc Esc — undo last edit
  • Enter while working — steer Claude mid-task
  • Ctrl+C — interrupt current action
  • Drag & drop images / screenshots
  • Type while Claude works (prompt queue)

Key Concepts

  • Context window — 1M tokens, shared space (more on this later)
  • Plan mode — read-only exploration
  • Sessions--continue / --resume
  • Tools — Read, Write, Edit, Bash, Glob, Grep, LSP, Agent

Custom Status Line

# Shows: user | directory | git branch+status | model | context %
 ehud   ~/Projects/tradeit-backend    main *↑2   Claude Opus   ctx:34%

# Set up via settings.json → statusLine config:
# { "statusLine": { "type": "command", "command": "sh ~/.claude/statusline-command.sh" } }
# The script reads JSON from stdin (model, cwd, context %) and formats it

/doctor — Check Your Health LIVE DEMO

  • Run /doctor at any point to check your environment
  • Shows context window usage — are you about to overflow?
  • Checks plugin status, MCP connections, authentication
  • Diagnoses common issues before they become problems
# Run the doctor
/doctor

# Context-mode specific diagnostics
/ctx-doctor

# Check context savings this session
/ctx-stats
Make it a habit: run /doctor when starting a long session and when things feel "off".

The Permission Model

Three Modes

  • Default — asks for each action
  • Allowlist — pre-approve specific tools
  • YOLO — allow everything (dangerous)
We use allowlist. Never YOLO on real repos.

Our settings.local.json

{
  "permissions": {
    "allow": [
      "Bash(ll)",
      "Bash(ls:*)",
      "WebSearch",
      "WebFetch(domain:github.com)",
      "mcp__wikijs__get_all_pages",
      "mcp__plugin_context-mode__ctx_stats",
      "mcp__plugin_context-mode__ctx_execute"
    ],
    "deny": []
  }
}

How I Built Our Setup

From 584 ChatGPT conversations to a structured Claude Code environment

Step 1: Export ChatGPT History

Export from ChatGPT
Settings → Data Controls → Export Data → download ZIP
Unzip the archive
Contains conversations.json — every conversation, every message
Place in a working directory
~/Downloads/chatgpt-export/conversations.json

Step 1: The Data

// conversations.json structure (simplified)
[
  {
    "title": "Fix Redis connection timeout",
    "mapping": {
      "message_id": {
        "message": {
          "author": { "role": "user" },
          "content": { "parts": ["How do I handle Redis timeouts in NestJS..."] }
        }
      }
    }
  },
  // ... 584 more conversations
]
584 conversations = years of context about our architecture, preferences, corrections, and decisions. Too valuable to leave behind.

Step 2: Let Claude Parse It LIVE DEMO

  • Open Claude Code in the export directory
  • Ask Claude to read and analyze conversations.json
  • Claude extracts patterns: preferences, corrections, architecture knowledge
# The prompt I used (roughly):
"Read conversations.json. Analyze all 584 conversations.
 Extract:
 - My coding preferences and style rules
 - Things I corrected the AI on repeatedly
 - Architecture knowledge about our systems
 - My communication style preferences
 - External references and tools I mentioned

 Generate structured memory files in markdown format
 with frontmatter (name, description, type)."

What Claude Generated

~/.claude/projects/-Users-ehud/memory/
  MEMORY.md                          # Index linking everything
  user_profile.md                    # Role, background, expertise
  feedback_communication_style.md    # How I want AI to respond
  feedback_code_preferences.md       # Code style, patterns, tools
  feedback_mental_model.md           # How I approach problems
  feedback_common_corrections.md     # Anti-patterns from 584 sessions
  project_repos_and_architecture.md  # 37 repos, full system map
  reference_wikijs_mcp.md            # External tool references

What's Inside the Memory Files

feedback_common_corrections.md

---
name: Common corrections
description: Anti-patterns from 584 sessions
type: feedback
---

### Response anti-patterns
- "stop summarizing what you just did"
  → No trailing summaries
- "all of these links are invalid"
  → Never hallucinate URLs
- "no KEYS command, production env"
  → Be production-aware
- "only show diffs, not full file"
  → Only show changes
- "stop sending general all-options"
  → Targeted answers only

Four Memory Types

  • user — role, goals, expertise level
  • feedback — corrections & confirmed approaches
  • project — repos, architecture, decisions
  • reference — pointers to external tools

MEMORY.md Index

# Memory Index

## User
- [user_profile.md] — CTO, team, stack

## Feedback
- [feedback_communication_style.md]
- [feedback_code_preferences.md]
- [feedback_mental_model.md]
- [feedback_common_corrections.md]

## Project
- [project_repos_and_architecture.md]

## Reference
- [reference_wikijs_mcp.md]

Step 3: Compact & Deduplicate

  • Raw extraction creates duplications across files
  • Use the claude-md-management plugin to audit and fix
  • /revise-claude-md — scans all CLAUDE.md and memory files
  • Finds overlaps, merges duplicates, compacts for conciseness
# Audit and improve CLAUDE.md files
/revise-claude-md

# What it does:
# 1. Scans ALL CLAUDE.md files (global, project, memory)
# 2. Finds duplicate/overlapping information
# 3. Merges redundant entries
# 4. Reports quality score before/after
# 5. Generates diff for review
Always review the changes before accepting. Sometimes Claude merges things that look similar but have important nuance differences.

The Context Window

Understanding the #1 thing that determines Claude Code quality

The Context Explosion Problem

  • Claude has a 1M token context window — sounds huge, but...
  • Every file read, every command output, every search result goes in
  • A single git log can dump 50KB of raw text
  • Reading 10 files = hundreds of KB of context consumed
  • 30 minutes of real work = 40-60% context gone

The Impact

315KB raw tool output (typical session)
5.4KB after context-mode (98% saved)
When context fills up, Claude compresses (compact) — it loses detail from earlier in the session. The quality of answers degrades. You feel it as "Claude got dumber" mid-session.

Context Mode Plugin LIVE DEMO

How It Works

  • Hooks intercept 9 tool types (Bash, Read, Grep, WebFetch, Agent...)
  • Raw output is processed in a sandbox (not in context)
  • Only a concise summary enters the context window
  • Full data is indexed in SQLite + FTS5 for later search

Context Mode — Key Tools

# Process commands without polluting context
ctx_batch_execute(commands, queries)

# Search over previously indexed data
ctx_search(queries: ["error logs", "config values"])

# Run code in sandbox, only summary enters context
ctx_execute(language: "shell", code: "npm test")
ctx_execute_file(path: "analyze.ts", language: "typescript")

# Fetch URLs without context pollution
ctx_fetch_and_index(url: "https://docs.nestjs.com/guards")
Check your savings: /ctx-stats — shows tokens saved, ratio, per-tool breakdown.

Keeping Context Concise & Specific

Context Wasters

  • Bloated CLAUDE.md with redundant rules
  • Duplicate info in memory + CLAUDE.md
  • "Read everything in src/"
  • Multiple unrelated topics per session
  • Long rambling prompts
  • Running commands with huge output

Context Savers

  • Compact CLAUDE.md (deduplicated)
  • Specific file references in prompts
  • One focused task per session
  • Plan mode for exploration
  • context-mode plugin for output
  • New session when context > 80%
< 50% Healthy — keep going
50-80% Caution — stay focused
> 80% Start a new session

CLAUDE.md & Team Workflows

How teams collaborate through shared configuration

The CLAUDE.md System

~/.claude/CLAUDE.md Global — personal preferences. NOT committed, per developer.
./CLAUDE.md Project root — shared with team. Committed to git repo.
~/Projects/<repo>/CLAUDE.md Project-level — project-specific rules. Committed to git.

Example Project CLAUDE.md

# Example: project-level CLAUDE.md (committed to tradeit-backend)

## Code style
- TypeScript strict, no semicolons, camelCase
- NestJS module/service/controller pattern
- TypeORM QueryBuilder for complex queries

## Testing
- Run tests: `npm test`
- Run specific: `npm test -- --grep "TradeService"`

## Hard rules
- MySQL 8 only — no 5.7 patterns
- No KEYS in Redis — always SCAN
- No curl in Docker containers

## Directory structure
- src/modules/ — feature modules (pricing, trade, inventory)
- src/common/ — shared utilities, guards, interceptors

Per-Project Claude Settings

  • Each repo can have its own .claude/settings.json
  • Committed to git — shared across the team
  • Project-specific permissions, allowed tools, MCP servers
// .claude/settings.json (in repo root, committed)
{
  "permissions": {
    "allow": [
      "Bash(npm test:*)",
      "Bash(npm run lint)",
      "Bash(npx prisma:*)"
    ]
  }
}

// .mcp.json (MCP servers for this project)
{
  "mcpServers": {
    "wikijs": {
      "command": "npx",
      "args": ["@cahaseler/wikijs-mcp"],
      "env": { "WIKI_URL": "https://wiki.tradeit.gg" }
    }
  }
}
New team member joins? git clone + claude — Claude already knows the project rules, testing commands, and permissions.

Plugins & Skills

The tools that make Claude Code a development platform

Plugin System

# Install a plugin
/plugin install superpowers

# List installed plugins
/plugin list

# Disable a plugin
/plugin disable code-simplifier

Our 15 Plugins by Category

Workflow superpowers • context-mode • commit-commands • code-simplifier • remember

Intelligence context7 • typescript-lsp • jdtls-lsp • security-guidance • explanatory-output-style

Integration linear • playwright • claude-md-management • skill-creator • claude-code-setup

Superpowers — Workflow Engine LIVE DEMO

Enforces development discipline — skills activate contextually

Planning & Design

  • brainstorming — explore before building
  • writing-plans — design before coding
  • executing-plans — follow the plan

Development

  • test-driven-development — red-green-refactor
  • systematic-debugging — root cause first
  • subagent-driven-dev — parallel execution

Quality & Delivery

  • requesting-code-review
  • receiving-code-review
  • verification-before-completion
  • finishing-a-dev-branch

Infrastructure

  • using-git-worktrees
  • dispatching-parallel-agents
  • writing-skills

The Superpowers Workflow

Idea
Brainstorm
Plan
Execute
Review
Verify
PR
  • Each step is gated — can't skip design and jump to code
  • Plan files written to ~/.claude/plans/
  • Subagents: fresh agent per task, own context window
  • Verification: must run tests and show evidence before claiming "done"

Plan Mode (Shift+Tab)

# Plan mode = read-only exploration
# Claude can: read files, search code, explore codebase, ask questions
# Claude cannot: edit files, run commands, make any changes
# Perfect for: understanding code before committing to an approach

Context7 & LSP Plugins LIVE DEMO

Context7 — Live Docs

  • Lookup docs for any library version
  • No more hallucinated API methods
  • Claude checks real docs before suggesting
# Claude internally calls:
resolve-library-id("nestjs")
query-docs("NestJS guards")

TypeScript LSP

  • Real-time type errors inside Claude
  • Hover for type information
  • Go-to-definition
  • Claude sees actual types, not guesses
# Claude sees errors as it writes:
TS2345: Argument of type 'string'
  is not assignable to parameter
  of type 'number'
Together these eliminate the #1 AI problem: making up APIs that don't exist.

Commit Commands & Other Plugins

Git Workflow

# Analyze changes → conventional commit
/commit

# Commit + push + create PR (full workflow)
/commit-push-pr

# Delete local branches already merged on remote
/clean_gone

Other Useful Plugins

  • code-simplifier/simplify refactors recently changed code
  • security-guidance — security review before deployment
  • claude-md-management/revise-claude-md audits and compacts config
  • explanatory-output-style — adds educational insights to responses
  • skill-creator — build custom skills and test them

MCP Servers

Connect Claude to your external tools and services

MCP — External Integrations LIVE DEMO

Model Context Protocol — APIs that Claude can use directly from your prompt

Figma Design → code
Screenshots, Code Connect
Slack Read channels, search
Send messages
Linear Issues, projects
Create & track work
Gmail Read & draft emails
Search messages
Intercom Support conversations
Articles & contacts
Wiki.js Internal wiki
Search & edit pages

One Prompt, Multiple Systems

"Read the Figma design at [URL] and generate a Vue component"
"Search Slack #engineering for the Redis migration discussion"
"Create a Linear ticket for this bug with the stack trace attached"
"Check our wiki for the deploy runbook and update step 3"

Skills

  • Markdown files with triggers & instructions
  • Teach Claude how to do workflows
  • Activate automatically or via slash
  • Stored in ~/.claude/skills/
---
name: my-workflow
description: Does X when Y
---

## When to activate
- User mentions "deploy"

## Instructions
1. Check branch status
2. Run tests
3. Create PR

Hooks

  • Shell commands at lifecycle events
  • SessionStart — inject context
  • PreToolUse — intercept tools
  • PostToolUse — capture output
  • PreCompact — snapshot state
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash|Read|Grep",
      "command": "node intercept.mjs"
    }]
  }
}
Composio skill: access 1000+ external apps. find-skills: browse community skills at skills.sh.

Working Efficiently

Interrupting, steering, and the /btw shortcut

Interrupt Early, Interrupt Often

Don't Let Claude Finish the Wrong Thing

  • Claude is expensive — every token costs money and context space
  • If you see it going the wrong direction — interrupt immediately
  • Esc or Ctrl+C stops the current action, or press Enter to steer mid-task
  • Letting Claude finish a wrong approach wastes:
    • Context window space (filled with useless output)
    • API tokens (you pay for wrong answers too)
    • Your time (reviewing and undoing bad changes)

The #1 Efficiency Killer

Watching Claude write 200 lines of code you know is wrong — then saying "actually, not that" — is the #1 efficiency killer. Stop it the moment you see the mistake.

Steering Mid-Task

Steer with Enter

  • While Claude is working, press Enter
  • Type a correction or additional instruction
  • Claude reads it without stopping
  • Adjusts its approach mid-stream
# Claude is writing a service...
# You notice it's using the wrong pattern
# Press Enter and type:

"use the repository pattern instead,
 like in user.repository.ts"

# Claude adjusts without restarting

The /btw Shortcut

  • Sends a side-note without interrupting the current task
  • Claude incorporates it into its work
  • Perfect for "oh, one more thing" moments
# Claude is mid-task and you remember:

/btw make sure to add the index
on the new column

/btw the env var is REDIS_CLUSTER_URL
not REDIS_URL

/btw we need to support Node 20 too
/btw = non-blocking side-note.
Ctrl+C = full stop.
Enter = redirect.

Efficiency Habits

Do

  • Interrupt immediately when you see a wrong direction
  • Use /btw for side-notes mid-task
  • Use prompt queue — type next instruction while Claude works
  • Plan mode first (Shift+Tab) — explore before changing
  • One task per session — new session when done
  • Check /doctor and /ctx-stats regularly
  • Esc Esc to undo if Claude made a bad edit

Efficiency Anti-Patterns

Don't

  • Let Claude finish writing code you know is wrong
  • Say "try again" without changing the direction
  • Mix multiple unrelated tasks in one session
  • Give vague prompts and hope for the best
  • Ignore the context percentage in the status line
  • Read entire directories when you need one file
  • Forget to /commit before starting a new task
The golden rule: Your time watching Claude do the wrong thing is more expensive than interrupting and redirecting.

Advanced Workflows

Parallel agents, workspaces, multi-repo projects, and voice

Parallel Agents & Worktrees LIVE DEMO

1 Developer → 4 Parallel Streams

Terminal 1
Feature A
Terminal 2
Feature B
Terminal 3
Bug Fix
Terminal 4
General Claude
~/
  • Git worktrees — isolated copy of the repo per feature, no branch switching
  • Each Claude instance has its own full context window
  • Superpowers handles worktree creation automatically

Worktree Commands

# Create worktrees for parallel work
git worktree add ../feature-auth feature/auth
git worktree add ../fix-pricing fix/pricing-bug

# Launch Claude in each
cd ../feature-auth && claude
cd ../fix-pricing && claude
Terminal 4: General Claude — keep a Claude session open in ~/ for quick questions, installing plugins, checking docs, or anything not tied to a specific project.

Multi-Repo Workspaces LIVE DEMO

When Your Feature Spans Multiple Repos

Create a workspace folder
mkdir ~/Workspaces/marketplace-aware-opensearch
Launch Claude with --add-dir
claude --add-dir ~/Projects/tradeit-backend --add-dir ~/Projects/tradeit-inventory-parser --add-dir ~/Projects/opensearch-indexing-contract

Reusable Workspaces

Save the workspace settings
Create CLAUDE.md in workspace folder with context about the cross-repo feature
Reuse anytime
cd ~/Workspaces/marketplace-aware-opensearch && claude — everything loads automatically
# Full example: creating a workspace for a multi-repo feature
mkdir -p ~/Workspaces/marketplace-aware-opensearch
cd ~/Workspaces/marketplace-aware-opensearch

# First time: launch with all repos
claude --add-dir ~/Projects/tradeit-backend \
       --add-dir ~/Projects/tradeit-inventory-parser \
       --add-dir ~/Projects/opensearch-indexing-contract

# Create workspace CLAUDE.md with feature context
# Save settings — next time just: cd here && claude

Prompt Engineering for Claude Code

Bad Prompts

"Make the code better"

"Fix the bug"

"Add tests"

"Refactor this"

Good Prompts

"Refactor getItemPrice in
 src/modules/pricing/pricing.service.ts
 to use early-exit pattern"

"The /api/inventory endpoint returns 500
 when Redis is down. Add try/catch with
 fallback to MySQL. Follow the pattern
 in trade.service.ts"

"Add unit tests for TradeService.execute
 following the test pattern in
 trade.service.spec.ts"

Key Prompting Rules

  • Reference existing files: "follow the pattern in..."
  • State constraints: "no new dependencies", "must be SSR-safe"
  • Use Shift+Tab (plan mode) to explore before changing
  • "Try again" means different approach, not same thing with minor tweaks

Voice Mode & Image Input

Voice Input

  • Enable first: /voice
  • Hold Space to record (not just press)
  • Release to send
  • Great for describing bugs or features naturally
  • Faster than typing complex explanations
Hold, don't tap. It's push-to-talk, not toggle.

Image / Screenshot Input

  • Drag & drop images into terminal
  • Paste screenshots from clipboard
  • Use cases:
    • Error screenshots from browser
    • UI mockups to implement
    • Architecture diagrams
    • Datadog/Grafana charts
A screenshot of a bug is often better than describing it. Paste the error, paste the UI, paste the diagram — Claude is multimodal.

Your Setup

Let's get everyone configured

Setup Checklist

Step by Step

  1. Install Claude Code
    npm i -g @anthropic-ai/claude-code
  2. Copy the global CLAUDE.md template
    I'll share via Slack
  3. Install core plugins (right column)
  4. Configure settings.json
  5. Set up permissions whitelist
  6. Connect MCP servers (Figma, Linear, Slack)
  7. Enable voice: /voice
  8. Run /doctor to verify everything

Plugin Install Commands

# Essential (install first)
/plugin install superpowers
/plugin install context-mode
/plugin install context7
/plugin install typescript-lsp
/plugin install commit-commands

# Recommended
/plugin install linear
/plugin install code-simplifier
/plugin install security-guidance
/plugin install claude-md-management
// settings.json
{
  "model": "opus[1m]",
  "effortLevel": "high"
}

Daily Workflow & Anti-Patterns

Daily Pattern

New session → focused task
Plan mode first, then code
/commit when done
New session for next task
One task per session.
Short, focused sessions beat long ones.

Anti-Patterns to Watch

  • Hallucinated URLs — always verify links
  • Dead imports added
  • Generic "5 possible causes" answers
  • Trailing summaries nobody reads
  • Adding unrequested changes
  • Suggesting deprecated patterns
"Try again" = try a DIFFERENT approach.
"Not that" = reassess, don't defend.

Team Rules

  • Shared CLAUDE.md per repo — committed, reviewed like code
  • Review Claude's output like you'd review a human's — it makes mistakes
  • Run /doctor when things feel off

Quick Reference Card

Keyboard Shortcuts

Shift+EnterMultiline input
Shift+TabPlan mode (read-only)
Esc EscUndo last edit
Hold SpaceVoice (after /voice)
EnterSteer / redirect mid-task
Ctrl+CHard stop / interrupt

Quick Reference Card

Key Commands

/btwSide-note without interrupting
/doctorHealth check
/commitConventional commit
/commit-push-prFull PR workflow
/clean_goneDelete merged branches
/simplifyRefactor code
/ctx-statsContext savings
/revise-claude-mdUpdate CLAUDE.md
--continueResume last session
--add-dirMulti-repo workspace

Questions? Open a general Claude at ~/ and ask. Or ask me — I've made every mistake already.