A production-ready Claude Code workspace configuration with MCP server integrations, custom skills, and specialized agents for structured software delivery.
- MCP Server Integration: Pre-configured connections to Atlassian (Jira/Confluence), GitLab, Puppeteer, Chrome DevTools, and Planka
- Custom Skills:
/mcwfor structured delivery workflow,/plankafor task management - Specialized Agents: 25+ agents for architecture, security, debugging, code review, and more
- Workflow Commands: E2E testing, refactoring, and documentation management
- Multi-Stack Support: PHP/Symfony, TypeScript/React, NestJS, and more
- Prerequisites
- Quick Start
- Documentation
- Available Skills
- Available Workflows
- Specialized Agents
- Usage Examples
- Customization
- Project Structure
- Best Practices
- Troubleshooting
- Contributing
- License
Before you begin, ensure you have:
- Claude Code or Claude Desktop installed and configured
- Node.js 18+ (required for MCP servers) - verify with
node --version- Chrome DevTools requires Node.js 20+
- Git for version control
- Active accounts for services you plan to integrate (optional):
- Atlassian Cloud account (for Jira/Confluence)
- GitLab account with API access
- Planka instance (self-hosted or cloud)
Note: MCP servers are installed automatically via npx when first accessed - no manual installation needed.
Method 1: Start a New Project with MCW ⭐ Recommended for new projects
Use MCW as your project foundation and build your application within it:
# Clone the repository
git clone https://github.com/your-username/mcw.git my-project
cd my-project
# Set up environment variables
cp .env.dist .env
# Edit .env with your API credentials
# Optional: Configure Planka
cp .planka.json.dist .planka.json
# Edit .planka.json with your board/list IDs
# Create your application structure (recommended)
mkdir -p api frontend
# Now build your app in api/ and frontend/ directoriesWhy this structure?
- MCW provides the workspace configuration at the root
- Your application code stays organized in subdirectories
- All MCP integrations, skills, and agents work seamlessly
- Easy to maintain and update MCW independently
Method 2: Add MCW to an Existing Project
Copy MCW configuration files into your existing codebase:
# From within your existing project directory
cd /path/to/your/existing/project
# Clone MCW temporarily
git clone https://github.com/your-username/mcw.git /tmp/mcw
# Copy configuration files
cp -r /tmp/mcw/.claude ./
cp /tmp/mcw/.env.dist ./.env
cp /tmp/mcw/.mcp.json ./
cp /tmp/mcw/.gitignore ./.gitignore # Or merge with existing
cp -r /tmp/mcw/.claude/skills ./.claude/skills # Optional: workflow skills
# Optional: Configure Planka
cp /tmp/mcw/.planka.json.dist ./.planka.json
# Clean up
rm -rf /tmp/mcw
# Edit .env with your API credentials
nano .envNote: If you already have a .claude/ directory, merge the agents and skills selectively.
Edit .claude/settings.local.json to enable the MCP servers you want:
{
"enabledMcpjsonServers": [
"atlassian",
"gitlab",
"puppeteer",
"chrome-devtools",
"planka"
],
"enableAllProjectMcpServers": true
}Edit your .env file with your API credentials:
Required environment variables by MCP server:
ATLASSIAN_SITE_URL="https://yourcompany.atlassian.net"
ATLASSIAN_USERNAME="your-email@company.com"
ATLASSIAN_API_TOKEN="your-api-token-here"How to get your API token:
- Go to Atlassian API Tokens
- Create a new token with appropriate permissions
- Copy the token immediately (it won't be shown again)
Note: Jira uses /jira path and Confluence uses /wiki path on the same domain. No separate URL needed.
GITLAB_URL="https://gitlab.com"
GITLAB_PERSONAL_ACCESS_TOKEN="your-gitlab-token"How to get your GitLab token:
- Go to GitLab Access Tokens
- Create token with scopes:
api,read_repository,write_repository - Copy the token
PLANKA_BASE_URL="https://planka.yourcompany.com"
PLANKA_AGENT_EMAIL="your-planka-email@company.com"
PLANKA_AGENT_PASSWORD="your-planka-password"If using Planka for task management:
cp .planka.json.dist .planka.jsonEdit .planka.json with your board and list IDs:
{
"boards": {
"your_board_name": {
"boardId": "YOUR_BOARD_ID",
"lists": {
"backlog": "LIST_ID_FOR_BACKLOG",
"discovery": "LIST_ID_FOR_DISCOVERY",
"ready_to_dev": "LIST_ID_FOR_READY",
"doing": "LIST_ID_FOR_IN_PROGRESS",
"test": "LIST_ID_FOR_TESTING",
"done": "LIST_ID_FOR_DONE"
}
}
}
}How to find your IDs:
- Open your Planka board in a browser
- Board ID is in the URL:
https://planka.example.com/boards/{boardId} - List IDs: Use
/plankaskill to list available boards and lists - See PLANKA.md for detailed configuration guide
Test that everything is configured correctly:
-
Start Claude Code in your project directory:
claude
-
Check MCP Server Status:
Type: What MCP servers are available?You should see: atlassian, gitlab, puppeteer, chrome-devtools, planka (if configured)
-
Test a Simple Command:
Try: Navigate to https://example.com using Puppeteer and take a screenshot -
Verify Environment Variables:
# Check that .env is properly configured (values should not be empty) grep -v '^#' .env | grep -v '^$'
-
Test Skills:
Try: /mcw --help Try: /planka list boards
✅ Success indicators:
- MCP servers appear in Claude's available tools
- No authentication errors when using services
- Skills execute without errors
❌ If something's wrong, see Troubleshooting section below.
Comprehensive guides for each component:
-
Atlassian Integration - Jira and Confluence MCP server guide
- Jira: Project management, issue tracking, sprint planning
- Confluence: Wiki pages, documentation, knowledge base
- JQL queries, ticket CRUD operations, page creation
- Prerequisites: Atlassian Cloud account, API token
-
GitLab Integration - GitLab MCP server guide
- Repository management and branch operations
- Merge request creation and code review workflows
- CI/CD pipeline monitoring and logs
- Issue tracking and project management
- Prerequisites: GitLab account, personal access token
-
Puppeteer Browser Automation - Puppeteer MCP server guide
- Web scraping and data extraction
- E2E test automation with Playwright integration
- Screenshot and PDF generation
- Form filling and web interaction
- Prerequisites: Node.js 18+, Chrome/Chromium browser
-
Chrome DevTools - Chrome DevTools MCP server guide
- Performance profiling and optimization
- Network request inspection and debugging
- Console log analysis and debugging
- DOM manipulation and element inspection
- Prerequisites: Node.js 20+, Chrome browser
-
Planka Task Management - Planka MCP server guide
- Board and list management
- Card creation and workflow automation
- Task tracking and time management
- Integration with
/mcwstructured delivery workflow - Prerequisites: Planka instance, user credentials
- E2E Testing Workflow - Playwright test generation and execution
- Refactoring Workflow - Safe dead code removal with test verification
- Documentation Sync - Automated documentation generation from package.json and .env
💡 Quick Tip: Start with the Puppeteer guide for an easy verification that your MCP setup is working correctly.
Skills are slash commands that invoke specialized workflows.
Automates the complete software delivery lifecycle with specialized agents for each phase.
When to use: Building new features from scratch with a structured, enterprise-grade process.
What it does:
- PRD Creation:
pm-prd-architectagent writes detailed Product Requirements Document - RFC Design:
analyser-architectagent creates technical architecture (Request for Comments) - Ticket Generation:
dev-team-leadagent breaks work into actionable Planka cards - Parallel Development: Specialized agents (frontend, backend, etc.) implement simultaneously
- Quality Gates:
analyser-code-reviewerreviews all code before completion
Usage examples:
/mcw Add user authentication with OAuth 2.0 and JWT tokens
/mcw Build a real-time dashboard with WebSocket notifications
/mcw Implement Stripe payment integration with webhooksExpected process: PRD → RFC → Tickets → Implementation → Review (15-30 minutes depending on complexity)
Output:
PRD.md- Product Requirements DocumentRFC.md- Technical architecture and design decisions- Planka board populated with tickets
- Implementation code across multiple files
- Test coverage
- Code review report with security analysis
Manage Planka board tasks directly from Claude Code.
When to use: Creating, moving, and tracking work items without leaving your editor.
Capabilities:
- Create cards with checklist tasks
- Move cards through workflow stages (backlog → discovery → ready_to_dev → doing → test → done)
- Add comments and labels
- Track time with stopwatch
- Query board state and card details
Usage examples:
/planka Create card "Add Stripe webhooks" in ready_to_dev
/planka Move card #123 to doing and start stopwatch
/planka Add comment to card #123 "Completed signature validation"
/planka List all cards in doing
/planka Get board summary with task countsIntegration: Works seamlessly with /mcw workflow - tickets created by /mcw appear in Planka automatically.
Documented processes in the .claude/skills/ directory that guide common development tasks.
File: .claude/skills/e2e/SKILL.md
Generate and run Playwright end-to-end tests for critical user journeys.
What it covers:
- Test journey planning (login flows, checkout, user registration)
- Playwright test generation with Page Object Model
- Cross-browser testing (Chrome, Firefox, Safari)
- Screenshot, video, and trace capture on failures
- Flaky test detection and quarantine recommendations
When to use: Before merging features, for regression testing, validating production-critical flows
File: .claude/skills/refactor-clean/SKILL.md
Identify and remove dead code with automated test verification.
What it covers:
- Dead code analysis with knip, depcheck, ts-prune
- Categorization by risk (SAFE, CAUTION, DANGER)
- Test-driven deletion (run tests → delete code → verify tests pass)
- Rollback on test failures
When to use: During refactoring sprints, before major releases, when reducing technical debt
File: .claude/skills/update-docs/SKILL.md
Generate documentation from source-of-truth files (package.json, .env.example).
What it covers:
- Extract scripts from package.json into reference tables
- Document environment variables from .env.example
- Generate CONTRIB.md (development workflow, setup, testing)
- Generate RUNBOOK.md (deployment, monitoring, troubleshooting)
- Identify obsolete documentation (90+ days old)
When to use: After changing scripts, adding env variables, onboarding new team members
Located in .claude/agents/, these agents provide domain expertise for specific tasks.
analyser-architect- Software architecture and RFC designanalyser-code-reviewer- Code quality, security, and maintainability reviewanalyser-debugger- Root cause analysis and production debugginganalyser-security- Security threat modeling and vulnerability scanninganalyser-refactorer- Code quality improvement and technical debt reductionanalyser-documentation- Technical writing and knowledge transferanalyser-devops- Infrastructure reliability and incident responseanalyser-e2e- End-to-end test strategy and implementation
typescript-frontend- React, TypeScript, MUI frontend developmenttypescript-nestjs- NestJS backend API developmentphp-symfony- Symfony backend developmentphp-developer- PHP 8 best practices and standardsphp-stan- PHPStan error resolutionphp-cs- PHP coding standards enforcementphp-messenger- Symfony Messenger architecturephp-stripe-symfony-integration- Stripe payment integration for Symfony
pm-prd-architect- Product Requirements Document creationdev-team-lead- Ticket management and team coordinationcto-tech-strategist- Technical strategy and architecture decisionscpo-strategist- Product strategy and roadmap planning
figma-ux-ui-spec- UX/UI specifications from Figma designsbrand-guardian- Brand consistency and design system complianceui-designer- Interface design and component architecture
Scenario: Add Stripe payment integration to an e-commerce platform
You: /mcw Add Stripe payment integration with checkout, webhooks, and subscription management
Claude (pm-prd-architect):
📋 Creating Product Requirements Document...
[Asks clarifying questions about payment flows, error handling, webhook events]
✓ PRD.md created with:
- User stories (guest checkout, subscription management, payment methods)
- Acceptance criteria (PCI compliance, webhook reliability, error recovery)
- Security requirements (token handling, webhook signature validation)
- Edge cases (payment failures, duplicate charges, refunds)
Waiting for your approval: "PRD validated"
You: PRD validated
Claude (analyser-architect):
🏗️ Creating RFC based on PRD...
✓ RFC.md created with:
- Architecture: Symfony backend + React frontend
- API endpoints: POST /payments, POST /webhooks/stripe, GET /subscriptions
- Database schema: payments, subscriptions, webhook_events tables
- Error handling strategy: retry logic with exponential backoff
- Testing approach: unit tests + Stripe test mode integration tests
Waiting for your approval: "RFC validated"
You: RFC validated
Claude (dev-team-lead):
🎫 Creating Planka tickets from RFC...
✓ Created 8 tickets in board "E-commerce Platform":
1. [BACKEND] Create Stripe SDK integration service
2. [BACKEND] Implement checkout API endpoint
3. [BACKEND] Build webhook handler with signature validation
4. [BACKEND] Add subscription management endpoints
5. [FRONTEND] Create payment form component
6. [FRONTEND] Add subscription UI dashboard
7. [TESTS] Write Stripe integration tests
8. [SECURITY] Conduct payment flow security audit
Claude (parallel execution):
🚀 Starting parallel implementation...
[typescript-nestjs agent]: Implementing backend services...
✓ Created src/stripe/stripe.service.ts
✓ Created src/payments/payments.controller.ts
✓ Created src/webhooks/stripe-webhook.controller.ts
✓ Added webhook signature validation
[typescript-frontend agent]: Implementing UI components...
✓ Created components/PaymentForm.tsx
✓ Created components/SubscriptionDashboard.tsx
✓ Added Stripe Elements integration
[analyser-code-reviewer agent]: Reviewing code...
✓ Security: Webhook signatures validated correctly
✓ Error handling: Proper try-catch and user feedback
⚠️ Warning: Add idempotency keys to prevent duplicate charges
✓ Tests: 87% coverage achieved
All tasks completed in 23 minutes.
Summary:
- 12 files created
- 8 Planka tickets completed
- 2 documentation files (PRD.md, RFC.md)
- Security audit passed with 1 recommendation
Time: ~25 minutes Output: Complete feature with documentation, tests, and security review
Scenario: Moving tickets through development workflow
You: /planka List cards in ready_to_dev
Claude:
📋 Cards in "Ready to Dev":
1. [CARD-123] Implement Stripe webhook handler
Due: Tomorrow | Labels: backend, payments
2. [CARD-124] Add payment form UI component
Due: This week | Labels: frontend, payments
3. [CARD-125] Write Stripe integration tests
Due: This week | Labels: tests
You: I'm starting work on CARD-123
Claude:
✓ Moved "Implement Stripe webhook handler" to "Doing"
✓ Stopwatch started (tracking time for this card)
[3 hours later]
You: /planka Add comment to CARD-123 "Completed webhook signature validation and event processing"
Claude:
✓ Comment added to CARD-123
You: /planka Move CARD-123 to test and stop stopwatch
Claude:
✓ Moved "Implement Stripe webhook handler" to "Test"
✓ Stopwatch stopped (Total time: 3h 12m)
✓ Time logged to card
Benefit: Full task visibility and time tracking without leaving Claude Code
Scenario: Test checkout flow before production deployment
You: Generate E2E tests for checkout flow: add product to cart, apply discount code, complete payment with Stripe
Claude (e2e-runner agent):
🧪 Generating Playwright test suite...
✓ Created tests/e2e/checkout-flow.spec.ts with:
- Test: User can add product to cart
- Test: Discount code applies correctly
- Test: Payment form validation works
- Test: Successful Stripe payment completes order
- Test: Failed payment shows error message
🏃 Running tests with Playwright...
Test Results (Chromium):
✓ User can add product to cart (2.3s)
✓ Discount code applies correctly (1.8s)
✓ Payment form validation works (1.2s)
✗ Successful Stripe payment completes order (timeout after 30s)
✓ Failed payment shows error message (2.1s)
❌ Found issue in "Successful payment" test:
Timeout waiting for element: [data-testid="order-confirmation"]
Root cause analysis:
- Webhook endpoint returned 500 error
- Order status not updated from "pending" to "completed"
Recommendation: Check webhook handler logs for errors
📸 Screenshots saved:
- tests/screenshots/cart-with-product.png
- tests/screenshots/payment-form.png
- tests/screenshots/payment-timeout.png
🎬 Video recorded: tests/videos/checkout-flow-failed.webm
🔍 Trace file: tests/traces/checkout-flow-trace.zip
View full report: npx playwright show-report
Time: 3 minutes Output: Test suite + execution report + debugging artifacts
Scenario: Pre-production security review of authentication system
You: @analyser-security Review the authentication system in src/auth/ for security vulnerabilities
Claude (analyser-security agent):
🔒 Security Threat Analysis Report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 CRITICAL ISSUES (Must Fix Before Deploy)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. JWT tokens have no expiration time
Location: src/auth/jwt.service.ts:23
Risk: Stolen tokens remain valid indefinitely
Fix:
```typescript
sign(payload) {
return jwt.sign(payload, SECRET, {
expiresIn: '15m' // Access token
});
}
-
Password reset tokens use sequential IDs Location: src/auth/password-reset.service.ts:45 Risk: Attackers can enumerate valid reset tokens Fix:
const token = crypto.randomBytes(32).toString('hex');
-
No rate limiting on login endpoint Location: src/auth/auth.controller.ts:18 Risk: Brute force attacks possible Fix:
@UseGuards(ThrottlerGuard) @Throttle(5, 900) // 5 attempts per 15 minutes async login() { ... }
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🟡 WARNINGS (Should Fix Soon) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
Refresh tokens stored in localStorage Risk: XSS vulnerability can steal tokens Recommendation: Use httpOnly cookies
-
Password requirements too weak Current: 6 characters minimum Recommendation: 12 chars, uppercase, lowercase, number, symbol
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ COMPLIANT ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Passwords hashed with bcrypt (cost: 12) ✓ SQL injection protected (parameterized queries) ✓ HTTPS enforced in production ✓ CORS configured correctly ✓ Input validation on all endpoints
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 Generated security patch files:
- patches/001-jwt-expiration.patch
- patches/002-secure-reset-tokens.patch
- patches/003-rate-limiting.patch
Apply patches: git apply patches/*.patch
**Time**: 5 minutes
**Benefit**: Production-ready security before deployment
---
### Example 5: Web Scraping with Puppeteer
**Scenario**: Monitor competitor pricing daily
You: @puppeteer Navigate to https://competitor.com/pricing and extract all plan names, prices, and features
Claude: 🌐 Launching browser... ✓ Navigated to https://competitor.com/pricing ✓ Page loaded (2.3s)
📊 Extracted pricing data:
{ "plans": [ { "name": "Starter", "price": "$29/month", "features": [ "Up to 1,000 users", "5 GB storage", "Email support", "Basic analytics" ] }, { "name": "Professional", "price": "$99/month", "features": [ "Up to 10,000 users", "50 GB storage", "Priority support", "Advanced analytics", "API access" ] }, { "name": "Enterprise", "price": "Contact Sales", "features": [ "Unlimited users", "Unlimited storage", "24/7 dedicated support", "Custom integrations", "SLA guarantee" ] } ], "lastChecked": "2026-01-25T14:32:00Z" }
📸 Screenshot saved: competitor-pricing-2026-01-25.png 💾 Data saved: competitor-pricing-data.json
✓ Browser closed
**Time**: 30 seconds
**Output**: Structured JSON data + screenshot for verification
---
## Customization
### Add Your Own Agents
Create new agents in `.claude/agents/`:
```markdown
---
name: my-custom-agent
description: Specialized agent for [your domain]
---
# Agent Instructions
You are a specialist in [domain expertise].
Your responsibilities:
- [Responsibility 1]
- [Responsibility 2]
When users request [specific tasks], you should:
1. [Step 1]
2. [Step 2]
Use these tools:
- [Tool 1] for [purpose]
- [Tool 2] for [purpose]
Organization:
agents/analyser/- Code analysis, debugging, securityagents/design/- UX/UI, brand, Figmaagents/devops/- Infrastructure, deployment, monitoringagents/management/- Product, project managementagents/php/- PHP-specific developmentagents/typescript/- TypeScript-specific development
Create new skills in .claude/skills/:
---
name: my-skill
description: Custom workflow for [purpose]
---
# Skill Instructions
This skill performs [high-level description].
## When to Use
- [Scenario 1]
- [Scenario 2]
## Workflow
1. [Step 1]
2. [Step 2]
3. [Step 3]
## Usage Examples
\`\`\`
/my-skill [example input]
\`\`\`Create a new skill directory in .claude/skills/<skill-name>/SKILL.md:
mkdir -p .claude/skills/my-workflow# .claude/skills/my-workflow/SKILL.md
---
name: my-workflow
description: Documentation for [workflow]
---
# Workflow Name
## Overview
[What this workflow accomplishes]
## When to Use
[Scenarios where this workflow is appropriate]
## Steps
1. [Step 1 with details]
2. [Step 2 with details]
## Example
[Real-world example with expected output]Edit existing agents to match your technology stack:
Example: Customize typescript-frontend agent for Vue.js instead of React:
# Before (React-focused)
You are a React and TypeScript expert...
# After (Vue-focused)
You are a Vue 3 and TypeScript expert specializing in Composition API...Example: Add your team's linting rules to analyser-code-reviewer:
Additional rules to enforce:
- Always use named exports (never default exports)
- Prefer async/await over .then() chains
- Database queries must have timeouts
- All API responses must include request IDs for tracingmcw/
├── .claude/ # Claude Code configuration
│ ├── agents/ # Specialized AI agents
│ │ ├── analyser/ # Code analysis, debugging, security
│ │ ├── design/ # UX/UI, brand, Figma
│ │ ├── devops/ # Infrastructure, deployment
│ │ ├── management/ # Product, project management
│ │ ├── php/ # PHP/Symfony development
│ │ ├── product/ # Product requirements, PRDs
│ │ └── typescript/ # TypeScript/React/NestJS
│ ├── skills/ # Custom slash commands (skill-name/SKILL.md)
│ │ ├── mcw/SKILL.md # /mcw structured delivery workflow
│ │ ├── planka/SKILL.md # /planka task management
│ │ ├── e2e/SKILL.md # /e2e E2E testing workflow
│ │ ├── refactor-clean/SKILL.md # /refactor-clean code cleanup
│ │ └── update-docs/SKILL.md # /update-docs documentation sync
│ └── settings.local.json # MCP server configuration
│
├── .mcp.json # MCP server definitions
├── .env.dist # Environment variables template
├── .env # Your credentials (gitignored)
├── .planka.json.dist # Planka configuration template
├── .planka.json # Your Planka config (gitignored)
├── .gitignore # Ignore sensitive files
│
├── ATLASSIAN.md # Jira/Confluence integration guide
├── GITLAB.md # GitLab integration guide
├── PUPPETEER.md # Puppeteer automation guide
├── CHROME-DEV-TOOLS.md # Chrome DevTools guide
├── PLANKA.md # Planka task management guide
└── README.md # This file
│
└── [YOUR APPLICATION] # Your project code
├── api/ # Backend code (recommended)
├── frontend/ # Frontend code (recommended)
└── ... # Other project files
Design Philosophy:
- MCW files at root provide workspace configuration
- Your application code lives in subdirectories (api/, frontend/, etc.)
- Configuration is modular and easy to update
- Sensitive files (.env, .planka.json) are gitignored
-
Always start with
/mcwfor new features- Ensures PRD → RFC → Implementation → Review cycle
- Documents requirements and architecture decisions
- Provides quality gates before code review
-
Use specialized agents for their domain expertise
- Don't ask generic questions - target the right agent
- Example:
@analyser-securityfor security review, not generic Claude
-
Run E2E tests before merging
- Reference
.claude/skills/e2e/SKILL.mdfor test generation - Critical flows must have E2E coverage
- Review test artifacts (screenshots, traces) on failures
- Reference
-
Code review is mandatory
analyser-code-reviewermust review all code changes- Address security warnings before deploying
- Never skip review for "small changes"
-
Track all work in Planka
- Use
/plankato create cards from conversations - Move cards through workflow stages
- Provides audit trail and team visibility
- Use
-
Never commit
.envor.planka.json- These contain sensitive credentials
- Verify
.gitignoreincludes these files - Use
.disttemplates for team sharing
-
Rotate API tokens regularly
- Quarterly rotation recommended
- Use tokens with minimal required permissions
- Revoke old tokens immediately
-
Use minimal MCP server permissions
- Only enable servers you actively use
- Review what data each server can access
- Disable unused servers in
settings.local.json
-
Review agent access carefully
- Agents have access to your codebase
- Agents can call external APIs (Jira, GitLab, etc.)
- Understand what each agent can do before using it
-
Environment variable security
- Never hardcode credentials in code
- Use
.envfor local development only - Use secure secret management in production (AWS Secrets Manager, etc.)
-
Choose the right agent for the task:
analyser-architect→ Design decisions, RFC creationanalyser-debugger→ Production bugs, root cause analysisanalyser-security→ Security audits, vulnerability scanningtypescript-frontend→ React/Vue UI worktypescript-nestjs→ NestJS backend APIsphp-symfony→ Symfony backend developmentpm-prd-architect→ Product requirements, user stories
-
Customize agents for your tech stack:
- Add framework-specific linting rules
- Include your team's coding standards
- Reference your architecture patterns
- Add company-specific security requirements
-
Provide context to agents:
- Reference relevant files: "Review src/auth/jwt.service.ts"
- Describe expected behavior: "JWT tokens should expire after 15 minutes"
- Mention constraints: "Must work with PostgreSQL 14"
-
MCP server not responding?
- Check
.envvariables are set correctly - Verify Node.js version:
node --version(18+ required, 20+ for Chrome DevTools) - Check network access to external services
- Restart Claude Code to reload configuration
- Enable server in
.claude/settings.local.json
- Check
-
Skill not working?
- Verify
.planka.jsonexists (for/plankaskill) - Check agent files exist in
.claude/agents/ - Review skill file in
.claude/skills/for requirements - Check Claude Code output for error messages
- Verify
-
Authentication errors?
- Verify API tokens are not expired
- Check token has correct permissions (scopes)
- Ensure URLs are correct (no trailing slashes)
- Test credentials manually in browser or Postman
-
Agent not behaving correctly?
- Read the agent file in
.claude/agents/to understand its purpose - Provide more specific instructions
- Reference specific files or code sections
- Try a different agent if task doesn't match agent's expertise
- Read the agent file in
-
Performance issues?
- Disable unused MCP servers
- Close unused browser instances (Puppeteer, Chrome DevTools)
- Clear Claude Code cache if responses are slow
- Check system resources (RAM, CPU)
Still having issues? See the detailed troubleshooting sections in:
- ATLASSIAN.md - Troubleshooting
- GITLAB.md - Troubleshooting
- PUPPETEER.md - Troubleshooting
- CHROME-DEV-TOOLS.md - Troubleshooting
This is a generic, reusable configuration designed to help developers build software more efficiently with Claude Code.
Ways to contribute:
- Report issues: Found a bug or unclear documentation? Open an issue
- Share agents: Created a useful agent? Submit a PR to add it to the collection
- Improve documentation: Found a typo or want to clarify something? Submit a PR
- Share workflows: Discovered an effective workflow? Document it in
.claude/skills/
Guidelines:
- Keep all content generic and project-agnostic
- Follow existing naming conventions and file structure
- Test agents and workflows before submitting
- Update relevant documentation when adding new features
Symptoms: Claude doesn't recognize MCP server tools (e.g., Puppeteer, GitLab commands don't work)
Solutions:
-
Verify server is enabled in
.claude/settings.local.json:{ "enabledMcpjsonServers": ["atlassian", "gitlab", "puppeteer", "chrome-devtools", "planka"], "enableAllProjectMcpServers": true } -
Check
.mcp.jsonconfiguration exists and is valid JSON -
Restart Claude Code completely
-
Verify Node.js version:
node --version(must be 18+ for most servers, 20+ for Chrome DevTools)
Symptoms: "401 Unauthorized", "403 Forbidden", "Invalid credentials"
Solutions:
-
Verify
.envfile exists and contains credentials:cat .env | grep -v '^#' | grep -v '^$'
-
Check API tokens are valid and not expired:
-
Verify token permissions/scopes are sufficient:
- GitLab needs:
api,read_repository,write_repository - Atlassian needs: Read/write access to Jira and Confluence
- GitLab needs:
-
Check URLs are correct (no typos, correct protocol https://)
-
Test credentials manually:
# Test GitLab curl -H "PRIVATE-TOKEN: your-token" https://gitlab.com/api/v4/user # Test Atlassian curl -u email@example.com:your-token https://yourcompany.atlassian.net/rest/api/3/myself
Symptoms: /planka skill errors, "Board not found", "List not found"
Solutions:
-
Verify
.planka.jsonexists and has correct structure:{ "boards": { "your_board_name": { "boardId": "...", "lists": { "backlog": "...", "doing": "..." } } } } -
Find your board and list IDs:
- Open Planka in browser
- Board ID is in URL:
https://planka.example.com/boards/{boardId} - Use
/plankaskill: "List all available boards" to get IDs
-
Check Planka credentials in
.env:PLANKA_BASE_URL="https://your-planka-instance.com" PLANKA_AGENT_EMAIL="your-email@company.com" PLANKA_AGENT_PASSWORD="your-password"
-
Test Planka connection:
Ask Claude: "List all Planka boards"
Symptoms: "Unsupported Node.js version", MCP server fails to start
Solutions:
-
Check current version:
node --version
-
Upgrade Node.js:
# Using nvm (recommended) nvm install 20 nvm use 20 nvm alias default 20 # Or download from nodejs.org
-
Verify after upgrade:
node --version # Should show v20.x.x or higher
Requirements:
- Minimum: Node.js 18+
- Chrome DevTools: Node.js 20+ (strict requirement)
- Recommended: Node.js 20 LTS for best compatibility
Symptoms: /mcw or /planka commands not recognized
Solutions:
-
Verify skill files exist:
ls -la .claude/skills/ # Should show: mcw.md, planka.md -
Check skill file format (must have frontmatter):
--- name: skill-name description: What it does --- # Skill content...
-
Restart Claude Code to reload skills
-
Try running skill directly:
/mcw --help /planka --help
Symptoms: Agent gives generic responses, doesn't follow domain expertise
Solutions:
-
Verify agent file exists:
ls -la .claude/agents/analyser/ ls -la .claude/agents/typescript/
-
Use correct agent invocation:
@analyser-security Review authentication code @typescript-frontend Create login form component -
Provide specific context:
BAD: "Review my code" GOOD: "@analyser-security Review src/auth/jwt.service.ts for security vulnerabilities" -
Check if agent has required tools access
Symptoms: Slow responses, high memory usage, timeouts
Solutions:
-
Disable unused MCP servers in
.claude/settings.local.json:{ "enabledMcpjsonServers": ["puppeteer", "planka"], // Only enable what you use "enableAllProjectMcpServers": true } -
Close browser instances:
# Check for lingering Chrome/Chromium processes ps aux | grep -i chrome ps aux | grep -i chromium # Kill if needed pkill -f chrome
-
Clear Claude Code cache:
rm -rf ~/.claude/cache/*
-
Check system resources:
# macOS top -o MEM # Linux htop
Symptoms: Links to ATLASSIAN.md, GITLAB.md, etc. don't work
Solutions:
-
Verify documentation files exist:
ls -la *.md # Should show: ATLASSIAN.md, GITLAB.md, PUPPETEER.md, CHROME-DEV-TOOLS.md, PLANKA.md
-
Check file names match exactly (case-sensitive on Linux/macOS)
-
Re-read README to find correct section links
If you're still experiencing issues:
-
Check detailed documentation:
- ATLASSIAN.md - Jira/Confluence troubleshooting
- GITLAB.md - GitLab troubleshooting
- PUPPETEER.md - Browser automation troubleshooting
- CHROME-DEV-TOOLS.md - DevTools troubleshooting
-
Review Claude Code documentation:
- Official docs: https://docs.claude.ai/claude-code
- GitHub issues: https://github.com/anthropics/claude-code/issues
-
Check MCP protocol documentation:
- MCP spec: https://modelcontextprotocol.io/
-
Report issues:
- Open an issue with details: https://github.com/your-username/mcw/issues
- Include: OS, Node.js version, error messages, steps to reproduce
Open source - use freely in your projects. Contributions welcome.
Built with ❤️ for developers who want to work smarter, not harder.