Curated Claude Code catalog
Updated 07.05.2026 · 19:39 CET
01 / Skill
affaan-m

everything-claude-code

Quality
10.0

This comprehensive system optimizes AI agent performance, offering production-ready agents, skills, hooks, and MCP configurations. It's ideal for building robust, continuously learning AI agents across various platforms like Claude Code, Codex, and Gemini, ensuring high-performance, secure, and scalable AI solutions.

USP

It's a complete performance optimization system, not just configs, with battle-tested components evolved over 10+ months of intensive use, supporting multiple AI agent harnesses. An Anthropic hackathon winner, it offers unique features lik…

Use cases

  • 01Building production-ready AI agents
  • 02Optimizing AI agent performance
  • 03Debugging agent failures
  • 04Designing REST APIs
  • 05Writing long-form content

Detected files (8)

  • .agents/skills/agent-introspection-debugging/SKILL.mdskill
    Show content (5517 bytes)
    ---
    name: agent-introspection-debugging
    description: Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports.
    ---
    
    # Agent Introspection Debugging
    
    Use this skill when an agent run is failing repeatedly, consuming tokens without progress, looping on the same tools, or drifting away from the intended task.
    
    This is a workflow skill, not a hidden runtime. It teaches the agent to debug itself systematically before escalating to a human.
    
    ## When to Activate
    
    - Maximum tool call / loop-limit failures
    - Repeated retries with no forward progress
    - Context growth or prompt drift that starts degrading output quality
    - File-system or environment state mismatch between expectation and reality
    - Tool failures that are likely recoverable with diagnosis and a smaller corrective action
    
    ## Scope Boundaries
    
    Activate this skill for:
    - capturing failure state before retrying blindly
    - diagnosing common agent-specific failure patterns
    - applying contained recovery actions
    - producing a structured human-readable debug report
    
    Do not use this skill as the primary source for:
    - feature verification after code changes; use `verification-loop`
    - framework-specific debugging when a narrower ECC skill already exists
    - runtime promises the current harness cannot enforce automatically
    
    ## Four-Phase Loop
    
    ### Phase 1: Failure Capture
    
    Before trying to recover, record the failure precisely.
    
    Capture:
    - error type, message, and stack trace when available
    - last meaningful tool call sequence
    - what the agent was trying to do
    - current context pressure: repeated prompts, oversized pasted logs, duplicated plans, or runaway notes
    - current environment assumptions: cwd, branch, relevant service state, expected files
    
    Minimum capture template:
    
    ```markdown
    ## Failure Capture
    - Session / task:
    - Goal in progress:
    - Error:
    - Last successful step:
    - Last failed tool / command:
    - Repeated pattern seen:
    - Environment assumptions to verify:
    ```
    
    ### Phase 2: Root-Cause Diagnosis
    
    Match the failure to a known pattern before changing anything.
    
    | Pattern | Likely Cause | Check |
    | --- | --- | --- |
    | Maximum tool calls / repeated same command | loop or no-exit observer path | inspect the last N tool calls for repetition |
    | Context overflow / degraded reasoning | unbounded notes, repeated plans, oversized logs | inspect recent context for duplication and low-signal bulk |
    | `ECONNREFUSED` / timeout | service unavailable or wrong port | verify service health, URL, and port assumptions |
    | `429` / quota exhaustion | retry storm or missing backoff | count repeated calls and inspect retry spacing |
    | file missing after write / stale diff | race, wrong cwd, or branch drift | re-check path, cwd, git status, and actual file existence |
    | tests still failing after “fix” | wrong hypothesis | isolate the exact failing test and re-derive the bug |
    
    Diagnosis questions:
    - is this a logic failure, state failure, environment failure, or policy failure?
    - did the agent lose the real objective and start optimizing the wrong subtask?
    - is the failure deterministic or transient?
    - what is the smallest reversible action that would validate the diagnosis?
    
    ### Phase 3: Contained Recovery
    
    Recover with the smallest action that changes the diagnosis surface.
    
    Safe recovery actions:
    - stop repeated retries and restate the hypothesis
    - trim low-signal context and keep only the active goal, blockers, and evidence
    - re-check the actual filesystem / branch / process state
    - narrow the task to one failing command, one file, or one test
    - switch from speculative reasoning to direct observation
    - escalate to a human when the failure is high-risk or externally blocked
    
    Do not claim unsupported auto-healing actions like “reset agent state” or “update harness config” unless you are actually doing them through real tools in the current environment.
    
    Contained recovery checklist:
    
    ```markdown
    ## Recovery Action
    - Diagnosis chosen:
    - Smallest action taken:
    - Why this is safe:
    - What evidence would prove the fix worked:
    ```
    
    ### Phase 4: Introspection Report
    
    End with a report that makes the recovery legible to the next agent or human.
    
    ```markdown
    ## Agent Self-Debug Report
    - Session / task:
    - Failure:
    - Root cause:
    - Recovery action:
    - Result: success | partial | blocked
    - Token / time burn risk:
    - Follow-up needed:
    - Preventive change to encode later:
    ```
    
    ## Recovery Heuristics
    
    Prefer these interventions in order:
    
    1. Restate the real objective in one sentence.
    2. Verify the world state instead of trusting memory.
    3. Shrink the failing scope.
    4. Run one discriminating check.
    5. Only then retry.
    
    Bad pattern:
    - retrying the same action three times with slightly different wording
    
    Good pattern:
    - capture failure
    - classify the pattern
    - run one direct check
    - change the plan only if the check supports it
    
    ## Integration with ECC
    
    - Use `verification-loop` after recovery if code was changed.
    - Use `continuous-learning-v2` when the failure pattern is worth turning into an instinct or later skill.
    - Use `council` when the issue is not technical failure but decision ambiguity.
    - Use `workspace-surface-audit` if the failure came from conflicting local state or repo drift.
    
    ## Output Standard
    
    When this skill is active, do not end with “I fixed it” alone.
    
    Always provide:
    - the failure pattern
    - the root-cause hypothesis
    - the recovery action
    - the evidence that the situation is now better or still blocked
    
  • .agents/skills/agent-sort/SKILL.mdskill
    Show content (5898 bytes)
    ---
    name: agent-sort
    description: Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.
    ---
    
    # Agent Sort
    
    Use this skill when a repo needs a project-specific ECC surface instead of the default full install.
    
    The goal is not to guess what "feels useful." The goal is to classify ECC components with evidence from the actual codebase.
    
    ## When to Use
    
    - A project only needs a subset of ECC and full installs are too noisy
    - The repo stack is clear, but nobody wants to hand-curate skills one by one
    - A team wants a repeatable install decision backed by grep evidence instead of opinion
    - You need to separate always-loaded daily workflow surfaces from searchable library/reference surfaces
    - A repo has drifted into the wrong language, rule, or hook set and needs cleanup
    
    ## Non-Negotiable Rules
    
    - Use the current repository as the source of truth, not generic preferences
    - Every DAILY decision must cite concrete repo evidence
    - LIBRARY does not mean "delete"; it means "keep accessible without loading by default"
    - Do not install hooks, rules, or scripts that the current repo cannot use
    - Prefer ECC-native surfaces; do not introduce a second install system
    
    ## Outputs
    
    Produce these artifacts in order:
    
    1. DAILY inventory
    2. LIBRARY inventory
    3. install plan
    4. verification report
    5. optional `skill-library` router if the project wants one
    
    ## Classification Model
    
    Use two buckets only:
    
    - `DAILY`
      - should load every session for this repo
      - strongly matched to the repo's language, framework, workflow, or operator surface
    - `LIBRARY`
      - useful to retain, but not worth loading by default
      - should remain reachable through search, router skill, or selective manual use
    
    ## Evidence Sources
    
    Use repo-local evidence before making any classification:
    
    - file extensions
    - package managers and lockfiles
    - framework configs
    - CI and hook configs
    - build/test scripts
    - imports and dependency manifests
    - repo docs that explicitly describe the stack
    
    Useful commands include:
    
    ```bash
    rg --files
    rg -n "typescript|react|next|supabase|django|spring|flutter|swift"
    cat package.json
    cat pyproject.toml
    cat Cargo.toml
    cat pubspec.yaml
    cat go.mod
    ```
    
    ## Parallel Review Passes
    
    If parallel subagents are available, split the review into these passes:
    
    1. Agents
       - classify `agents/*`
    2. Skills
       - classify `skills/*`
    3. Commands
       - classify `commands/*`
    4. Rules
       - classify `rules/*`
    5. Hooks and scripts
       - classify hook surfaces, MCP health checks, helper scripts, and OS compatibility
    6. Extras
       - classify contexts, examples, MCP configs, templates, and guidance docs
    
    If subagents are not available, run the same passes sequentially.
    
    ## Core Workflow
    
    ### 1. Read the repo
    
    Establish the real stack before classifying anything:
    
    - languages in use
    - frameworks in use
    - primary package manager
    - test stack
    - lint/format stack
    - deployment/runtime surface
    - operator integrations already present
    
    ### 2. Build the evidence table
    
    For every candidate surface, record:
    
    - component path
    - component type
    - proposed bucket
    - repo evidence
    - short justification
    
    Use this format:
    
    ```text
    skills/frontend-patterns | skill | DAILY | 84 .tsx files, next.config.ts present | core frontend stack
    skills/django-patterns   | skill | LIBRARY | no .py files, no pyproject.toml       | not active in this repo
    rules/typescript/*       | rules | DAILY | package.json + tsconfig.json            | active TS repo
    rules/python/*           | rules | LIBRARY | zero Python source files             | keep accessible only
    ```
    
    ### 3. Decide DAILY vs LIBRARY
    
    Promote to `DAILY` when:
    
    - the repo clearly uses the matching stack
    - the component is general enough to help every session
    - the repo already depends on the corresponding runtime or workflow
    
    Demote to `LIBRARY` when:
    
    - the component is off-stack
    - the repo might need it later, but not every day
    - it adds context overhead without immediate relevance
    
    ### 4. Build the install plan
    
    Translate the classification into action:
    
    - DAILY skills -> install or keep in `.claude/skills/`
    - DAILY commands -> keep as explicit shims only if still useful
    - DAILY rules -> install only matching language sets
    - DAILY hooks/scripts -> keep only compatible ones
    - LIBRARY surfaces -> keep accessible through search or `skill-library`
    
    If the repo already uses selective installs, update that plan instead of creating another system.
    
    ### 5. Create the optional library router
    
    If the project wants a searchable library surface, create:
    
    - `.claude/skills/skill-library/SKILL.md`
    
    That router should contain:
    
    - a short explanation of DAILY vs LIBRARY
    - grouped trigger keywords
    - where the library references live
    
    Do not duplicate every skill body inside the router.
    
    ### 6. Verify the result
    
    After the plan is applied, verify:
    
    - every DAILY file exists where expected
    - stale language rules were not left active
    - incompatible hooks were not installed
    - the resulting install actually matches the repo stack
    
    Return a compact report with:
    
    - DAILY count
    - LIBRARY count
    - removed stale surfaces
    - open questions
    
    ## Handoffs
    
    If the next step is interactive installation or repair, hand off to:
    
    - `configure-ecc`
    
    If the next step is overlap cleanup or catalog review, hand off to:
    
    - `skill-stocktake`
    
    If the next step is broader context trimming, hand off to:
    
    - `strategic-compact`
    
    ## Output Format
    
    Return the result in this order:
    
    ```text
    STACK
    - language/framework/runtime summary
    
    DAILY
    - always-loaded items with evidence
    
    LIBRARY
    - searchable/reference items with evidence
    
    INSTALL PLAN
    - what should be installed, removed, or routed
    
    VERIFICATION
    - checks run and remaining gaps
    ```
    
  • .agents/skills/api-design/SKILL.mdskill
    Show content (13098 bytes)
    ---
    name: api-design
    description: REST API design patterns including resource naming, status codes, pagination, filtering, error responses, versioning, and rate limiting for production APIs.
    ---
    
    # API Design Patterns
    
    Conventions and best practices for designing consistent, developer-friendly REST APIs.
    
    ## When to Activate
    
    - Designing new API endpoints
    - Reviewing existing API contracts
    - Adding pagination, filtering, or sorting
    - Implementing error handling for APIs
    - Planning API versioning strategy
    - Building public or partner-facing APIs
    
    ## Resource Design
    
    ### URL Structure
    
    ```
    # Resources are nouns, plural, lowercase, kebab-case
    GET    /api/v1/users
    GET    /api/v1/users/:id
    POST   /api/v1/users
    PUT    /api/v1/users/:id
    PATCH  /api/v1/users/:id
    DELETE /api/v1/users/:id
    
    # Sub-resources for relationships
    GET    /api/v1/users/:id/orders
    POST   /api/v1/users/:id/orders
    
    # Actions that don't map to CRUD (use verbs sparingly)
    POST   /api/v1/orders/:id/cancel
    POST   /api/v1/auth/login
    POST   /api/v1/auth/refresh
    ```
    
    ### Naming Rules
    
    ```
    # GOOD
    /api/v1/team-members          # kebab-case for multi-word resources
    /api/v1/orders?status=active  # query params for filtering
    /api/v1/users/123/orders      # nested resources for ownership
    
    # BAD
    /api/v1/getUsers              # verb in URL
    /api/v1/user                  # singular (use plural)
    /api/v1/team_members          # snake_case in URLs
    /api/v1/users/123/getOrders   # verb in nested resource
    ```
    
    ## HTTP Methods and Status Codes
    
    ### Method Semantics
    
    | Method | Idempotent | Safe | Use For |
    |--------|-----------|------|---------|
    | GET | Yes | Yes | Retrieve resources |
    | POST | No | No | Create resources, trigger actions |
    | PUT | Yes | No | Full replacement of a resource |
    | PATCH | No* | No | Partial update of a resource |
    | DELETE | Yes | No | Remove a resource |
    
    *PATCH can be made idempotent with proper implementation
    
    ### Status Code Reference
    
    ```
    # Success
    200 OK                    — GET, PUT, PATCH (with response body)
    201 Created               — POST (include Location header)
    204 No Content            — DELETE, PUT (no response body)
    
    # Client Errors
    400 Bad Request           — Validation failure, malformed JSON
    401 Unauthorized          — Missing or invalid authentication
    403 Forbidden             — Authenticated but not authorized
    404 Not Found             — Resource doesn't exist
    409 Conflict              — Duplicate entry, state conflict
    422 Unprocessable Entity  — Semantically invalid (valid JSON, bad data)
    429 Too Many Requests     — Rate limit exceeded
    
    # Server Errors
    500 Internal Server Error — Unexpected failure (never expose details)
    502 Bad Gateway           — Upstream service failed
    503 Service Unavailable   — Temporary overload, include Retry-After
    ```
    
    ### Common Mistakes
    
    ```
    # BAD: 200 for everything
    { "status": 200, "success": false, "error": "Not found" }
    
    # GOOD: Use HTTP status codes semantically
    HTTP/1.1 404 Not Found
    { "error": { "code": "not_found", "message": "User not found" } }
    
    # BAD: 500 for validation errors
    # GOOD: 400 or 422 with field-level details
    
    # BAD: 200 for created resources
    # GOOD: 201 with Location header
    HTTP/1.1 201 Created
    Location: /api/v1/users/abc-123
    ```
    
    ## Response Format
    
    ### Success Response
    
    ```json
    {
      "data": {
        "id": "abc-123",
        "email": "alice@example.com",
        "name": "Alice",
        "created_at": "2025-01-15T10:30:00Z"
      }
    }
    ```
    
    ### Collection Response (with Pagination)
    
    ```json
    {
      "data": [
        { "id": "abc-123", "name": "Alice" },
        { "id": "def-456", "name": "Bob" }
      ],
      "meta": {
        "total": 142,
        "page": 1,
        "per_page": 20,
        "total_pages": 8
      },
      "links": {
        "self": "/api/v1/users?page=1&per_page=20",
        "next": "/api/v1/users?page=2&per_page=20",
        "last": "/api/v1/users?page=8&per_page=20"
      }
    }
    ```
    
    ### Error Response
    
    ```json
    {
      "error": {
        "code": "validation_error",
        "message": "Request validation failed",
        "details": [
          {
            "field": "email",
            "message": "Must be a valid email address",
            "code": "invalid_format"
          },
          {
            "field": "age",
            "message": "Must be between 0 and 150",
            "code": "out_of_range"
          }
        ]
      }
    }
    ```
    
    ### Response Envelope Variants
    
    ```typescript
    // Option A: Envelope with data wrapper (recommended for public APIs)
    interface ApiResponse<T> {
      data: T;
      meta?: PaginationMeta;
      links?: PaginationLinks;
    }
    
    interface ApiError {
      error: {
        code: string;
        message: string;
        details?: FieldError[];
      };
    }
    
    // Option B: Flat response (simpler, common for internal APIs)
    // Success: just return the resource directly
    // Error: return error object
    // Distinguish by HTTP status code
    ```
    
    ## Pagination
    
    ### Offset-Based (Simple)
    
    ```
    GET /api/v1/users?page=2&per_page=20
    
    # Implementation
    SELECT * FROM users
    ORDER BY created_at DESC
    LIMIT 20 OFFSET 20;
    ```
    
    **Pros:** Easy to implement, supports "jump to page N"
    **Cons:** Slow on large offsets (OFFSET 100000), inconsistent with concurrent inserts
    
    ### Cursor-Based (Scalable)
    
    ```
    GET /api/v1/users?cursor=eyJpZCI6MTIzfQ&limit=20
    
    # Implementation
    SELECT * FROM users
    WHERE id > :cursor_id
    ORDER BY id ASC
    LIMIT 21;  -- fetch one extra to determine has_next
    ```
    
    ```json
    {
      "data": [...],
      "meta": {
        "has_next": true,
        "next_cursor": "eyJpZCI6MTQzfQ"
      }
    }
    ```
    
    **Pros:** Consistent performance regardless of position, stable with concurrent inserts
    **Cons:** Cannot jump to arbitrary page, cursor is opaque
    
    ### When to Use Which
    
    | Use Case | Pagination Type |
    |----------|----------------|
    | Admin dashboards, small datasets (<10K) | Offset |
    | Infinite scroll, feeds, large datasets | Cursor |
    | Public APIs | Cursor (default) with offset (optional) |
    | Search results | Offset (users expect page numbers) |
    
    ## Filtering, Sorting, and Search
    
    ### Filtering
    
    ```
    # Simple equality
    GET /api/v1/orders?status=active&customer_id=abc-123
    
    # Comparison operators (use bracket notation)
    GET /api/v1/products?price[gte]=10&price[lte]=100
    GET /api/v1/orders?created_at[after]=2025-01-01
    
    # Multiple values (comma-separated)
    GET /api/v1/products?category=electronics,clothing
    
    # Nested fields (dot notation)
    GET /api/v1/orders?customer.country=US
    ```
    
    ### Sorting
    
    ```
    # Single field (prefix - for descending)
    GET /api/v1/products?sort=-created_at
    
    # Multiple fields (comma-separated)
    GET /api/v1/products?sort=-featured,price,-created_at
    ```
    
    ### Full-Text Search
    
    ```
    # Search query parameter
    GET /api/v1/products?q=wireless+headphones
    
    # Field-specific search
    GET /api/v1/users?email=alice
    ```
    
    ### Sparse Fieldsets
    
    ```
    # Return only specified fields (reduces payload)
    GET /api/v1/users?fields=id,name,email
    GET /api/v1/orders?fields=id,total,status&include=customer.name
    ```
    
    ## Authentication and Authorization
    
    ### Token-Based Auth
    
    ```
    # Bearer token in Authorization header
    GET /api/v1/users
    Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
    
    # API key (for server-to-server)
    GET /api/v1/data
    X-API-Key: sk_live_abc123
    ```
    
    ### Authorization Patterns
    
    ```typescript
    // Resource-level: check ownership
    app.get("/api/v1/orders/:id", async (req, res) => {
      const order = await Order.findById(req.params.id);
      if (!order) return res.status(404).json({ error: { code: "not_found" } });
      if (order.userId !== req.user.id) return res.status(403).json({ error: { code: "forbidden" } });
      return res.json({ data: order });
    });
    
    // Role-based: check permissions
    app.delete("/api/v1/users/:id", requireRole("admin"), async (req, res) => {
      await User.delete(req.params.id);
      return res.status(204).send();
    });
    ```
    
    ## Rate Limiting
    
    ### Headers
    
    ```
    HTTP/1.1 200 OK
    X-RateLimit-Limit: 100
    X-RateLimit-Remaining: 95
    X-RateLimit-Reset: 1640000000
    
    # When exceeded
    HTTP/1.1 429 Too Many Requests
    Retry-After: 60
    {
      "error": {
        "code": "rate_limit_exceeded",
        "message": "Rate limit exceeded. Try again in 60 seconds."
      }
    }
    ```
    
    ### Rate Limit Tiers
    
    | Tier | Limit | Window | Use Case |
    |------|-------|--------|----------|
    | Anonymous | 30/min | Per IP | Public endpoints |
    | Authenticated | 100/min | Per user | Standard API access |
    | Premium | 1000/min | Per API key | Paid API plans |
    | Internal | 10000/min | Per service | Service-to-service |
    
    ## Versioning
    
    ### URL Path Versioning (Recommended)
    
    ```
    /api/v1/users
    /api/v2/users
    ```
    
    **Pros:** Explicit, easy to route, cacheable
    **Cons:** URL changes between versions
    
    ### Header Versioning
    
    ```
    GET /api/users
    Accept: application/vnd.myapp.v2+json
    ```
    
    **Pros:** Clean URLs
    **Cons:** Harder to test, easy to forget
    
    ### Versioning Strategy
    
    ```
    1. Start with /api/v1/ — don't version until you need to
    2. Maintain at most 2 active versions (current + previous)
    3. Deprecation timeline:
       - Announce deprecation (6 months notice for public APIs)
       - Add Sunset header: Sunset: Sat, 01 Jan 2026 00:00:00 GMT
       - Return 410 Gone after sunset date
    4. Non-breaking changes don't need a new version:
       - Adding new fields to responses
       - Adding new optional query parameters
       - Adding new endpoints
    5. Breaking changes require a new version:
       - Removing or renaming fields
       - Changing field types
       - Changing URL structure
       - Changing authentication method
    ```
    
    ## Implementation Patterns
    
    ### TypeScript (Next.js API Route)
    
    ```typescript
    import { z } from "zod";
    import { NextRequest, NextResponse } from "next/server";
    
    const createUserSchema = z.object({
      email: z.string().email(),
      name: z.string().min(1).max(100),
    });
    
    export async function POST(req: NextRequest) {
      const body = await req.json();
      const parsed = createUserSchema.safeParse(body);
    
      if (!parsed.success) {
        return NextResponse.json({
          error: {
            code: "validation_error",
            message: "Request validation failed",
            details: parsed.error.issues.map(i => ({
              field: i.path.join("."),
              message: i.message,
              code: i.code,
            })),
          },
        }, { status: 422 });
      }
    
      const user = await createUser(parsed.data);
    
      return NextResponse.json(
        { data: user },
        {
          status: 201,
          headers: { Location: `/api/v1/users/${user.id}` },
        },
      );
    }
    ```
    
    ### Python (Django REST Framework)
    
    ```python
    from rest_framework import serializers, viewsets, status
    from rest_framework.response import Response
    
    class CreateUserSerializer(serializers.Serializer):
        email = serializers.EmailField()
        name = serializers.CharField(max_length=100)
    
    class UserSerializer(serializers.ModelSerializer):
        class Meta:
            model = User
            fields = ["id", "email", "name", "created_at"]
    
    class UserViewSet(viewsets.ModelViewSet):
        serializer_class = UserSerializer
        permission_classes = [IsAuthenticated]
    
        def get_serializer_class(self):
            if self.action == "create":
                return CreateUserSerializer
            return UserSerializer
    
        def create(self, request):
            serializer = CreateUserSerializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            user = UserService.create(**serializer.validated_data)
            return Response(
                {"data": UserSerializer(user).data},
                status=status.HTTP_201_CREATED,
                headers={"Location": f"/api/v1/users/{user.id}"},
            )
    ```
    
    ### Go (net/http)
    
    ```go
    func (h *UserHandler) CreateUser(w http.ResponseWriter, r *http.Request) {
        var req CreateUserRequest
        if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
            writeError(w, http.StatusBadRequest, "invalid_json", "Invalid request body")
            return
        }
    
        if err := req.Validate(); err != nil {
            writeError(w, http.StatusUnprocessableEntity, "validation_error", err.Error())
            return
        }
    
        user, err := h.service.Create(r.Context(), req)
        if err != nil {
            switch {
            case errors.Is(err, domain.ErrEmailTaken):
                writeError(w, http.StatusConflict, "email_taken", "Email already registered")
            default:
                writeError(w, http.StatusInternalServerError, "internal_error", "Internal error")
            }
            return
        }
    
        w.Header().Set("Location", fmt.Sprintf("/api/v1/users/%s", user.ID))
        writeJSON(w, http.StatusCreated, map[string]any{"data": user})
    }
    ```
    
    ## API Design Checklist
    
    Before shipping a new endpoint:
    
    - [ ] Resource URL follows naming conventions (plural, kebab-case, no verbs)
    - [ ] Correct HTTP method used (GET for reads, POST for creates, etc.)
    - [ ] Appropriate status codes returned (not 200 for everything)
    - [ ] Input validated with schema (Zod, Pydantic, Bean Validation)
    - [ ] Error responses follow standard format with codes and messages
    - [ ] Pagination implemented for list endpoints (cursor or offset)
    - [ ] Authentication required (or explicitly marked as public)
    - [ ] Authorization checked (user can only access their own resources)
    - [ ] Rate limiting configured
    - [ ] Response does not leak internal details (stack traces, SQL errors)
    - [ ] Consistent naming with existing endpoints (camelCase vs snake_case)
    - [ ] Documented (OpenAPI/Swagger spec updated)
    
  • .agents/skills/article-writing/SKILL.mdskill
    Show content (2902 bytes)
    ---
    name: article-writing
    description: Write articles, guides, blog posts, tutorials, newsletter issues, and other long-form content in a distinctive voice derived from supplied examples or brand guidance. Use when the user wants polished written content longer than a paragraph, especially when voice consistency, structure, and credibility matter.
    ---
    
    # Article Writing
    
    Write long-form content that sounds like an actual person with a point of view, not an LLM smoothing itself into paste.
    
    ## When to Activate
    
    - drafting blog posts, essays, launch posts, guides, tutorials, or newsletter issues
    - turning notes, transcripts, or research into polished articles
    - matching an existing founder, operator, or brand voice from examples
    - tightening structure, pacing, and evidence in already-written long-form copy
    
    ## Core Rules
    
    1. Lead with the concrete thing: artifact, example, output, anecdote, number, screenshot, or code.
    2. Explain after the example, not before.
    3. Keep sentences tight unless the source voice is intentionally expansive.
    4. Use proof instead of adjectives.
    5. Never invent facts, credibility, or customer evidence.
    
    ## Voice Handling
    
    If the user wants a specific voice, run `brand-voice` first and reuse its `VOICE PROFILE`.
    Do not duplicate a second style-analysis pass here unless the user explicitly asks for one.
    
    If no voice references are given, default to a sharp operator voice: concrete, unsentimental, useful.
    
    ## Banned Patterns
    
    Delete and rewrite any of these:
    - "In today's rapidly evolving landscape"
    - "game-changer", "cutting-edge", "revolutionary"
    - "here's why this matters" as a standalone bridge
    - fake vulnerability arcs
    - a closing question added only to juice engagement
    - biography padding that does not move the argument
    - generic AI throat-clearing that delays the point
    
    ## Writing Process
    
    1. Clarify the audience and purpose.
    2. Build a hard outline with one job per section.
    3. Start sections with proof, artifact, conflict, or example.
    4. Expand only where the next sentence earns space.
    5. Cut anything that sounds templated, overexplained, or self-congratulatory.
    
    ## Structure Guidance
    
    ### Technical Guides
    
    - open with what the reader gets
    - use code, commands, screenshots, or concrete output in major sections
    - end with actionable takeaways, not a soft recap
    
    ### Essays / Opinion
    
    - start with tension, contradiction, or a specific observation
    - keep one argument thread per section
    - make opinions answer to evidence
    
    ### Newsletters
    
    - keep the first screen doing real work
    - do not front-load diary filler
    - use section labels only when they improve scanability
    
    ## Quality Gate
    
    Before delivering:
    - factual claims are backed by provided sources
    - generic AI transitions are gone
    - the voice matches the supplied examples or the agreed `VOICE PROFILE`
    - every section adds something new
    - formatting matches the intended medium
    
  • .agents/skills/backend-patterns/SKILL.mdskill
    Show content (13825 bytes)
    ---
    name: backend-patterns
    description: Backend architecture patterns, API design, database optimization, and server-side best practices for Node.js, Express, and Next.js API routes.
    ---
    
    # Backend Development Patterns
    
    Backend architecture patterns and best practices for scalable server-side applications.
    
    ## When to Activate
    
    - Designing REST or GraphQL API endpoints
    - Implementing repository, service, or controller layers
    - Optimizing database queries (N+1, indexing, connection pooling)
    - Adding caching (Redis, in-memory, HTTP cache headers)
    - Setting up background jobs or async processing
    - Structuring error handling and validation for APIs
    - Building middleware (auth, logging, rate limiting)
    
    ## API Design Patterns
    
    ### RESTful API Structure
    
    ```typescript
    // PASS: Resource-based URLs
    GET    /api/markets                 # List resources
    GET    /api/markets/:id             # Get single resource
    POST   /api/markets                 # Create resource
    PUT    /api/markets/:id             # Replace resource
    PATCH  /api/markets/:id             # Update resource
    DELETE /api/markets/:id             # Delete resource
    
    // PASS: Query parameters for filtering, sorting, pagination
    GET /api/markets?status=active&sort=volume&limit=20&offset=0
    ```
    
    ### Repository Pattern
    
    ```typescript
    // Abstract data access logic
    interface MarketRepository {
      findAll(filters?: MarketFilters): Promise<Market[]>
      findById(id: string): Promise<Market | null>
      create(data: CreateMarketDto): Promise<Market>
      update(id: string, data: UpdateMarketDto): Promise<Market>
      delete(id: string): Promise<void>
    }
    
    class SupabaseMarketRepository implements MarketRepository {
      async findAll(filters?: MarketFilters): Promise<Market[]> {
        let query = supabase.from('markets').select('*')
    
        if (filters?.status) {
          query = query.eq('status', filters.status)
        }
    
        if (filters?.limit) {
          query = query.limit(filters.limit)
        }
    
        const { data, error } = await query
    
        if (error) throw new Error(error.message)
        return data
      }
    
      // Other methods...
    }
    ```
    
    ### Service Layer Pattern
    
    ```typescript
    // Business logic separated from data access
    class MarketService {
      constructor(private marketRepo: MarketRepository) {}
    
      async searchMarkets(query: string, limit: number = 10): Promise<Market[]> {
        // Business logic
        const embedding = await generateEmbedding(query)
        const results = await this.vectorSearch(embedding, limit)
    
        // Fetch full data
        const markets = await this.marketRepo.findByIds(results.map(r => r.id))
    
        // Sort by similarity
        return markets.sort((a, b) => {
          const scoreA = results.find(r => r.id === a.id)?.score || 0
          const scoreB = results.find(r => r.id === b.id)?.score || 0
          return scoreA - scoreB
        })
      }
    
      private async vectorSearch(embedding: number[], limit: number) {
        // Vector search implementation
      }
    }
    ```
    
    ### Middleware Pattern
    
    ```typescript
    // Request/response processing pipeline
    export function withAuth(handler: NextApiHandler): NextApiHandler {
      return async (req, res) => {
        const token = req.headers.authorization?.replace('Bearer ', '')
    
        if (!token) {
          return res.status(401).json({ error: 'Unauthorized' })
        }
    
        try {
          const user = await verifyToken(token)
          req.user = user
          return handler(req, res)
        } catch (error) {
          return res.status(401).json({ error: 'Invalid token' })
        }
      }
    }
    
    // Usage
    export default withAuth(async (req, res) => {
      // Handler has access to req.user
    })
    ```
    
    ## Database Patterns
    
    ### Query Optimization
    
    ```typescript
    // PASS: GOOD: Select only needed columns
    const { data } = await supabase
      .from('markets')
      .select('id, name, status, volume')
      .eq('status', 'active')
      .order('volume', { ascending: false })
      .limit(10)
    
    // FAIL: BAD: Select everything
    const { data } = await supabase
      .from('markets')
      .select('*')
    ```
    
    ### N+1 Query Prevention
    
    ```typescript
    // FAIL: BAD: N+1 query problem
    const markets = await getMarkets()
    for (const market of markets) {
      market.creator = await getUser(market.creator_id)  // N queries
    }
    
    // PASS: GOOD: Batch fetch
    const markets = await getMarkets()
    const creatorIds = markets.map(m => m.creator_id)
    const creators = await getUsers(creatorIds)  // 1 query
    const creatorMap = new Map(creators.map(c => [c.id, c]))
    
    markets.forEach(market => {
      market.creator = creatorMap.get(market.creator_id)
    })
    ```
    
    ### Transaction Pattern
    
    ```typescript
    async function createMarketWithPosition(
      marketData: CreateMarketDto,
      positionData: CreatePositionDto
    ) {
      // Use Supabase transaction
      const { data, error } = await supabase.rpc('create_market_with_position', {
        market_data: marketData,
        position_data: positionData
      })
    
      if (error) throw new Error('Transaction failed')
      return data
    }
    
    // SQL function in Supabase
    CREATE OR REPLACE FUNCTION create_market_with_position(
      market_data jsonb,
      position_data jsonb
    )
    RETURNS jsonb
    LANGUAGE plpgsql
    AS $$
    BEGIN
      -- Start transaction automatically
      INSERT INTO markets VALUES (market_data);
      INSERT INTO positions VALUES (position_data);
      RETURN jsonb_build_object('success', true);
    EXCEPTION
      WHEN OTHERS THEN
        -- Rollback happens automatically
        RETURN jsonb_build_object('success', false, 'error', SQLERRM);
    END;
    $$;
    ```
    
    ## Caching Strategies
    
    ### Redis Caching Layer
    
    ```typescript
    class CachedMarketRepository implements MarketRepository {
      constructor(
        private baseRepo: MarketRepository,
        private redis: RedisClient
      ) {}
    
      async findById(id: string): Promise<Market | null> {
        // Check cache first
        const cached = await this.redis.get(`market:${id}`)
    
        if (cached) {
          return JSON.parse(cached)
        }
    
        // Cache miss - fetch from database
        const market = await this.baseRepo.findById(id)
    
        if (market) {
          // Cache for 5 minutes
          await this.redis.setex(`market:${id}`, 300, JSON.stringify(market))
        }
    
        return market
      }
    
      async invalidateCache(id: string): Promise<void> {
        await this.redis.del(`market:${id}`)
      }
    }
    ```
    
    ### Cache-Aside Pattern
    
    ```typescript
    async function getMarketWithCache(id: string): Promise<Market> {
      const cacheKey = `market:${id}`
    
      // Try cache
      const cached = await redis.get(cacheKey)
      if (cached) return JSON.parse(cached)
    
      // Cache miss - fetch from DB
      const market = await db.markets.findUnique({ where: { id } })
    
      if (!market) throw new Error('Market not found')
    
      // Update cache
      await redis.setex(cacheKey, 300, JSON.stringify(market))
    
      return market
    }
    ```
    
    ## Error Handling Patterns
    
    ### Centralized Error Handler
    
    ```typescript
    class ApiError extends Error {
      constructor(
        public statusCode: number,
        public message: string,
        public isOperational = true
      ) {
        super(message)
        Object.setPrototypeOf(this, ApiError.prototype)
      }
    }
    
    export function errorHandler(error: unknown, req: Request): Response {
      if (error instanceof ApiError) {
        return NextResponse.json({
          success: false,
          error: error.message
        }, { status: error.statusCode })
      }
    
      if (error instanceof z.ZodError) {
        return NextResponse.json({
          success: false,
          error: 'Validation failed',
          details: error.errors
        }, { status: 400 })
      }
    
      // Log unexpected errors
      console.error('Unexpected error:', error)
    
      return NextResponse.json({
        success: false,
        error: 'Internal server error'
      }, { status: 500 })
    }
    
    // Usage
    export async function GET(request: Request) {
      try {
        const data = await fetchData()
        return NextResponse.json({ success: true, data })
      } catch (error) {
        return errorHandler(error, request)
      }
    }
    ```
    
    ### Retry with Exponential Backoff
    
    ```typescript
    async function fetchWithRetry<T>(
      fn: () => Promise<T>,
      maxRetries = 3
    ): Promise<T> {
      let lastError: Error
    
      for (let i = 0; i < maxRetries; i++) {
        try {
          return await fn()
        } catch (error) {
          lastError = error as Error
    
          if (i < maxRetries - 1) {
            // Exponential backoff: 1s, 2s, 4s
            const delay = Math.pow(2, i) * 1000
            await new Promise(resolve => setTimeout(resolve, delay))
          }
        }
      }
    
      throw lastError!
    }
    
    // Usage
    const data = await fetchWithRetry(() => fetchFromAPI())
    ```
    
    ## Authentication & Authorization
    
    ### JWT Token Validation
    
    ```typescript
    import jwt from 'jsonwebtoken'
    
    interface JWTPayload {
      userId: string
      email: string
      role: 'admin' | 'user'
    }
    
    export function verifyToken(token: string): JWTPayload {
      try {
        const payload = jwt.verify(token, process.env.JWT_SECRET!) as JWTPayload
        return payload
      } catch (error) {
        throw new ApiError(401, 'Invalid token')
      }
    }
    
    export async function requireAuth(request: Request) {
      const token = request.headers.get('authorization')?.replace('Bearer ', '')
    
      if (!token) {
        throw new ApiError(401, 'Missing authorization token')
      }
    
      return verifyToken(token)
    }
    
    // Usage in API route
    export async function GET(request: Request) {
      const user = await requireAuth(request)
    
      const data = await getDataForUser(user.userId)
    
      return NextResponse.json({ success: true, data })
    }
    ```
    
    ### Role-Based Access Control
    
    ```typescript
    type Permission = 'read' | 'write' | 'delete' | 'admin'
    
    interface User {
      id: string
      role: 'admin' | 'moderator' | 'user'
    }
    
    const rolePermissions: Record<User['role'], Permission[]> = {
      admin: ['read', 'write', 'delete', 'admin'],
      moderator: ['read', 'write', 'delete'],
      user: ['read', 'write']
    }
    
    export function hasPermission(user: User, permission: Permission): boolean {
      return rolePermissions[user.role].includes(permission)
    }
    
    export function requirePermission(permission: Permission) {
      return (handler: (request: Request, user: User) => Promise<Response>) => {
        return async (request: Request) => {
          const user = await requireAuth(request)
    
          if (!hasPermission(user, permission)) {
            throw new ApiError(403, 'Insufficient permissions')
          }
    
          return handler(request, user)
        }
      }
    }
    
    // Usage - HOF wraps the handler
    export const DELETE = requirePermission('delete')(
      async (request: Request, user: User) => {
        // Handler receives authenticated user with verified permission
        return new Response('Deleted', { status: 200 })
      }
    )
    ```
    
    ## Rate Limiting
    
    ### Simple In-Memory Rate Limiter
    
    ```typescript
    class RateLimiter {
      private requests = new Map<string, number[]>()
    
      async checkLimit(
        identifier: string,
        maxRequests: number,
        windowMs: number
      ): Promise<boolean> {
        const now = Date.now()
        const requests = this.requests.get(identifier) || []
    
        // Remove old requests outside window
        const recentRequests = requests.filter(time => now - time < windowMs)
    
        if (recentRequests.length >= maxRequests) {
          return false  // Rate limit exceeded
        }
    
        // Add current request
        recentRequests.push(now)
        this.requests.set(identifier, recentRequests)
    
        return true
      }
    }
    
    const limiter = new RateLimiter()
    
    export async function GET(request: Request) {
      const ip = request.headers.get('x-forwarded-for') || 'unknown'
    
      const allowed = await limiter.checkLimit(ip, 100, 60000)  // 100 req/min
    
      if (!allowed) {
        return NextResponse.json({
          error: 'Rate limit exceeded'
        }, { status: 429 })
      }
    
      // Continue with request
    }
    ```
    
    ## Background Jobs & Queues
    
    ### Simple Queue Pattern
    
    ```typescript
    class JobQueue<T> {
      private queue: T[] = []
      private processing = false
    
      async add(job: T): Promise<void> {
        this.queue.push(job)
    
        if (!this.processing) {
          this.process()
        }
      }
    
      private async process(): Promise<void> {
        this.processing = true
    
        while (this.queue.length > 0) {
          const job = this.queue.shift()!
    
          try {
            await this.execute(job)
          } catch (error) {
            console.error('Job failed:', error)
          }
        }
    
        this.processing = false
      }
    
      private async execute(job: T): Promise<void> {
        // Job execution logic
      }
    }
    
    // Usage for indexing markets
    interface IndexJob {
      marketId: string
    }
    
    const indexQueue = new JobQueue<IndexJob>()
    
    export async function POST(request: Request) {
      const { marketId } = await request.json()
    
      // Add to queue instead of blocking
      await indexQueue.add({ marketId })
    
      return NextResponse.json({ success: true, message: 'Job queued' })
    }
    ```
    
    ## Logging & Monitoring
    
    ### Structured Logging
    
    ```typescript
    interface LogContext {
      userId?: string
      requestId?: string
      method?: string
      path?: string
      [key: string]: unknown
    }
    
    class Logger {
      log(level: 'info' | 'warn' | 'error', message: string, context?: LogContext) {
        const entry = {
          timestamp: new Date().toISOString(),
          level,
          message,
          ...context
        }
    
        console.log(JSON.stringify(entry))
      }
    
      info(message: string, context?: LogContext) {
        this.log('info', message, context)
      }
    
      warn(message: string, context?: LogContext) {
        this.log('warn', message, context)
      }
    
      error(message: string, error: Error, context?: LogContext) {
        this.log('error', message, {
          ...context,
          error: error.message,
          stack: error.stack
        })
      }
    }
    
    const logger = new Logger()
    
    // Usage
    export async function GET(request: Request) {
      const requestId = crypto.randomUUID()
    
      logger.info('Fetching markets', {
        requestId,
        method: 'GET',
        path: '/api/markets'
      })
    
      try {
        const markets = await fetchMarkets()
        return NextResponse.json({ success: true, data: markets })
      } catch (error) {
        logger.error('Failed to fetch markets', error as Error, { requestId })
        return NextResponse.json({ error: 'Internal error' }, { status: 500 })
      }
    }
    ```
    
    **Remember**: Backend patterns enable scalable, maintainable server-side applications. Choose patterns that fit your complexity level.
    
  • .agents/skills/brand-voice/SKILL.mdskill
    Show content (3624 bytes)
    ---
    name: brand-voice
    description: Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that profile across content, outreach, and social workflows. Use when the user wants voice consistency without generic AI writing tropes.
    ---
    
    # Brand Voice
    
    Build a durable voice profile from real source material, then use that profile everywhere instead of re-deriving style from scratch or defaulting to generic AI copy.
    
    ## When to Activate
    
    - the user wants content or outreach in a specific voice
    - writing for X, LinkedIn, email, launch posts, threads, or product updates
    - adapting a known author's tone across channels
    - the existing content lane needs a reusable style system instead of one-off mimicry
    
    ## Source Priority
    
    Use the strongest real source set available, in this order:
    
    1. recent original X posts and threads
    2. articles, essays, memos, launch notes, or newsletters
    3. real outbound emails or DMs that worked
    4. product docs, changelogs, README framing, and site copy
    
    Do not use generic platform exemplars as source material.
    
    ## Collection Workflow
    
    1. Gather 5 to 20 representative samples when available.
    2. Prefer recent material over old material unless the user says the older writing is more canonical.
    3. Separate "public launch voice" from "private working voice" if the source set clearly splits.
    4. If live X access is available, use `x-api` to pull recent original posts before drafting.
    5. If site copy matters, include the current ECC landing page and repo/plugin framing.
    
    ## What to Extract
    
    - rhythm and sentence length
    - compression vs explanation
    - capitalization norms
    - parenthetical use
    - question frequency and purpose
    - how sharply claims are made
    - how often numbers, mechanisms, or receipts show up
    - how transitions work
    - what the author never does
    
    ## Output Contract
    
    Produce a reusable `VOICE PROFILE` block that downstream skills can consume directly. Use the schema in [references/voice-profile-schema.md](references/voice-profile-schema.md).
    
    Keep the profile structured and short enough to reuse in session context. The point is not literary criticism. The point is operational reuse.
    
    ## Affaan / ECC Defaults
    
    If the user wants Affaan / ECC voice and live sources are thin, start here unless newer source material overrides it:
    
    - direct, compressed, concrete
    - specifics, mechanisms, receipts, and numbers beat adjectives
    - parentheticals are for qualification, narrowing, or over-clarification
    - capitalization is conventional unless there is a real reason to break it
    - questions are rare and should not be used as bait
    - tone can be sharp, blunt, skeptical, or dry
    - transitions should feel earned, not smoothed over
    
    ## Hard Bans
    
    Delete and rewrite any of these:
    
    - fake curiosity hooks
    - "not X, just Y"
    - "no fluff"
    - forced lowercase
    - LinkedIn thought-leader cadence
    - bait questions
    - "Excited to share"
    - generic founder-journey filler
    - corny parentheticals
    
    ## Persistence Rules
    
    - Reuse the latest confirmed `VOICE PROFILE` across related tasks in the same session.
    - If the user asks for a durable artifact, save the profile in the requested workspace location or memory surface.
    - Do not create repo-tracked files that store personal voice fingerprints unless the user explicitly asks for that.
    
    ## Downstream Use
    
    Use this skill before or inside:
    
    - `content-engine`
    - `crosspost`
    - `lead-intelligence`
    - article or launch writing
    - cold or warm outbound across X, LinkedIn, and email
    
    If another skill already has a partial voice capture section, this skill is the canonical source of truth.
    
  • .agents/plugins/marketplace.jsonmarketplace
    Show content (384 bytes)
    {
      "name": "ecc",
      "interface": {
        "displayName": "Everything Claude Code"
      },
      "plugins": [
        {
          "name": "ecc",
          "version": "2.0.0-rc.1",
          "source": {
            "source": "local",
            "path": "../.."
          },
          "policy": {
            "installation": "AVAILABLE",
            "authentication": "ON_INSTALL"
          },
          "category": "Productivity"
        }
      ]
    }
    
  • .claude-plugin/marketplace.jsonmarketplace
    Show content (1260 bytes)
    {
      "name": "everything-claude-code",
      "owner": {
        "name": "Affaan Mustafa",
        "email": "me@affaanmustafa.com"
      },
      "metadata": {
        "description": "Battle-tested Claude Code configurations from an Anthropic hackathon winner"
      },
      "plugins": [
        {
          "name": "everything-claude-code",
          "source": "./",
          "description": "The most comprehensive Claude Code plugin — 48 agents, 182 skills, 68 legacy command shims, selective install profiles, and production-ready hooks for TDD, security scanning, code review, and continuous learning",
          "version": "2.0.0-rc.1",
          "author": {
            "name": "Affaan Mustafa",
            "email": "me@affaanmustafa.com"
          },
          "homepage": "https://ecc.tools",
          "repository": "https://github.com/affaan-m/everything-claude-code",
          "license": "MIT",
          "keywords": [
            "agents",
            "skills",
            "hooks",
            "commands",
            "tdd",
            "code-review",
            "security",
            "best-practices"
          ],
          "category": "workflow",
          "tags": [
            "agents",
            "skills",
            "hooks",
            "commands",
            "tdd",
            "code-review",
            "security",
            "best-practices"
          ],
          "strict": false
        }
      ]
    }
    

README

Language: English | Português (Brasil) | 简体中文 | 繁體中文 | 日本語 | 한국어 | Türkçe

Everything Claude Code

Everything Claude Code — the performance system for AI agent harnesses

Stars Forks Contributors npm ecc-universal npm ecc-agentshield GitHub App Install License Shell TypeScript Python Go Java Perl Markdown

140K+ stars | 21K+ forks | 170+ contributors | 12+ language ecosystems | Anthropic Hackathon Winner


Language / 语言 / 語言 / Dil

English | Português (Brasil) | 简体中文 | 繁體中文 | 日本語 | 한국어 | Türkçe


The performance optimization system for AI agent harnesses. From an Anthropic hackathon winner.

Not just configs. A complete system: skills, instincts, memory optimization, continuous learning, security scanning, and research-first development. Production-ready agents, skills, hooks, rules, MCP configurations, and legacy command shims evolved over 10+ months of intensive daily use building real products.

Works across Claude Code, Codex, Cursor, OpenCode, Gemini, and other AI agent harnesses.

ECC v2.0.0-rc.1 adds the public Hermes operator story on top of that reusable layer: start with the Hermes setup guide, then review the rc.1 release notes and cross-harness architecture.


The Guides

This repo is the raw code only. The guides explain everything.

The Shorthand Guide to Everything Claude Code The Longform Guide to Everything Claude Code The Shorthand Guide to Everything Agentic Security
Shorthand Guide
Setup, foundations, philosophy. Read this first.
Longform Guide
Token optimization, memory persistence, evals, parallelization.
Security Guide
Attack vectors, sandboxing, sanitization, CVEs, AgentShield.
TopicWhat You'll Learn
Token OptimizationModel selection, system prompt slimming, background processes
Memory PersistenceHooks that save/load context across sessions automatically
Continuous LearningAuto-extract patterns from sessions into reusable skills
Verification LoopsCheckpoint vs continuous evals, grader types, pass@k metrics
ParallelizationGit worktrees, cascade method, when to scale instances
Subagent OrchestrationThe context problem, iterative retrieval pattern

What's New

v2.0.0-rc.1 — Surface Refresh, Operator Workflows, and ECC 2.0 Alpha (Apr 2026)

  • Dashboard GUI — New Tkinter-based desktop application (ecc_dashboard.py or npm run dashboard) with dark/light theme toggle, font customization, and project logo in header and taskbar.
  • Public surface synced to the live repo — metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface: 48 agents, 182 skills, and 68 legacy command shims.
  • Operator and outbound workflow expansionbrand-voice, social-graph-ranker, connections-optimizer, customer-billing-ops, ecc-tools-cost-audit, google-workspace-ops, project-flow-ops, and workspace-surface-audit round out the operator lane.
  • Media and launch toolingmanim-video, remotion-video-creation, and upgraded social publishing surfaces make technical explainers and launch content part of the same system.
  • Framework and product surface growthnestjs-patterns, richer Codex/OpenCode install surfaces, and expanded cross-harness packaging keep the repo usable beyond Claude Code alone.
  • ECC 2.0 alpha is in-tree — the Rust control-plane prototype in ecc2/ now builds locally and exposes dashboard, start, sessions, status, stop, resume, and daemon commands. It is usable as an alpha, not yet a general release.
  • Ecosystem hardening — AgentShield, ECC Tools cost controls, billing portal work, and website refreshes continue to ship around the core plugin instead of drifting into separate silos.

v1.9.0 — Selective Install & Language Expansion (Mar 2026)

  • Selective install architecture — Manifest-driven install pipeline with install-plan.js and install-apply.js for targeted component installation. State store tracks what's installed and enables incremental updates.
  • 6 new agentstypescript-reviewer, pytorch-build-resolver, java-build-resolver, java-reviewer, kotlin-reviewer, kotlin-build-resolver expand language coverage to 10 languages.
  • New skillspytorch-patterns for deep learning workflows, documentation-lookup for API reference research, bun-runtime and nextjs-turbopack for modern JS toolchains, plus 8 operational domain skills and mcp-server-patterns.
  • Session & state infrastructure — SQLite state store with query CLI, session adapters for structured recording, skill evolution foundation for self-improving skills.
  • Orchestration overhaul — Harness audit scoring made deterministic, orchestration status and launcher compatibility hardened, observer loop prevention with 5-layer guard.
  • Observer reliability — Memory explosion fix with throttling and tail sampling, sandbox access fix, lazy-start logic, and re-entrancy guard.
  • 12 language ecosystems — New rules for Java, PHP, Perl, Kotlin/Android/KMP, C++, and Rust join existing TypeScript, Python, Go, and common rules.
  • Community contributions — Korean and Chinese translations, biome hook optimization, video processing skills, operational skills, PowerShell installer, Antigravity IDE support.
  • CI hardening — 19 test failure fixes, catalog count enforcement, install manifest validation, and full test suite green.

v1.8.0 — Harness Performance System (Mar 2026)

  • Harness-first release — ECC is now explicitly framed as an agent harness performance system, not just a config pack.
  • Hook reliability overhaul — SessionStart root fallback, Stop-phase session summaries, and script-based hooks replacing fragile inline one-liners.
  • Hook runtime controlsECC_HOOK_PROFILE=minimal|standard|strict and ECC_DISABLED_HOOKS=... for runtime gating without editing hook files.
  • New harness commands/harness-audit, /loop-start, /loop-status, /quality-gate, /model-route.
  • NanoClaw v2 — model routing, skill hot-load, session branch/search/export/compact/metrics.
  • Cross-harness parity — behavior tightened across Claude Code, Cursor, OpenCode, and Codex app/CLI.
  • 997 internal tests passing — full suite green after hook/runtime refactor and compatibility updates.

v1.7.0 — Cross-Platform Expansion & Presentation Builder (Feb 2026)

  • Codex app + CLI support — Direct AGENTS.md-based Codex support, installer targeting, and Codex docs
  • frontend-slides skill — Zero-dependency HTML presentation builder with PPTX conversion guidance and strict viewport-fit rules
  • 5 new generic business/content skillsarticle-writing, content-engine, market-research, investor-materials, investor-outreach
  • Broader tool coverage — Cursor, Codex, and OpenCode support tightened so the same repo ships cleanly across all major harnesses
  • 992 internal tests — Expanded validation and regression coverage across plugin, hooks, skills, and packaging

v1.6.0 — Codex CLI, AgentShield & Marketplace (Feb 2026)

  • Codex CLI support — New /codex-setup command generates codex.md for OpenAI Codex CLI compatibility
  • 7 new skillssearch-first, swift-actor-persistence, swift-protocol-di-testing, regex-vs-llm-structured-text, content-hash-cache-pattern, cost-aware-llm-pipeline, skill-stocktake
  • AgentShield integration/security-scan skill runs AgentShield directly from Claude Code; 1282 tests, 102 rules
  • GitHub Marketplace — ECC Tools GitHub App live at github.com/marketplace/ecc-tools with free/pro/enterprise tiers
  • 30+ community PRs merged — Contributions from 30 contributors across 6 languages
  • 978 internal tests — Expanded validation suite across agents, skills, commands, hooks, and rules

v1.4.1 — Bug Fix (Feb 2026)

  • Fixed instinct import content lossparse_instinct_file() was silently dropping all content after frontmatter (Action, Evidence, Examples sections) during /instinct-import. (#148, #161)

v1.4.0 — Multi-Language Rules, Installation Wizard & PM2 (Feb 2026)

  • Interactive installation wizard — New configure-ecc skill provides guided setup with merge/overwrite detection
  • PM2 & multi-agent orchestration — 6 new commands (/pm2, /multi-plan, /multi-execute, /multi-backend, /multi-frontend, /multi-workflow) for managing complex multi-service workflows
  • Multi-language rules architecture — Rules restructured from flat files into common/ + typescript/ + python/ + golang/ directories. Install only the languages you need
  • Chinese (zh-CN) translations — Complete translation of all agents, commands, skills, and rules (80+ files)
  • GitHub Sponsors support — Sponsor the project via GitHub Sponsors
  • Enhanced CONTRIBUTING.md — Detailed PR templates for each contribution type

v1.3.0 — OpenCode Plugin Support (Feb 2026)

  • Full OpenCode integration — 12 agents, 24 commands, 16 skills with hook support via OpenCode's plugin system (20+ event types)
  • 3 native custom tools — run-tests, check-coverage, security-audit
  • LLM documentationllms.txt for comprehensive OpenCode docs

v1.2.0 — Unified Commands & Skills (Feb 2026)

  • Python/Django support — Django patterns, security, TDD, and verification skills
  • Java Spring Boot skills — Patterns, security, TDD, and verification for Spring Boot
  • Session management/sessions command for session history
  • Continuous learning v2 — Instinct-based learning with confidence scoring, import/export, evolution

See the full changelog in Releases.


Quick Start

Get up and running in under 2 minutes:

Pick one path only

Most Claude Code users should use exactly one install path:

  • Recommended default: install the Claude Code plugin, then copy only the rule folders you actually want.
  • Use the manual installer only if you want finer-grained control, want to avoid the plugin path entirely, or your Claude Code build has trouble resolving the self-hosted marketplace entry.
  • Do not stack install methods. The most common broken setup is: /plugin install first, then install.sh --profile full or npx ecc-install --profile full afterward.

If you already layered multiple installs and things look duplicated, skip straight to Reset / Uninstall ECC.

Low-context / no-hooks path

If hooks feel too global or you only want ECC's rules, agents, commands, and core workflow skills, skip the plugin and use the minimal manual profile:

./install.sh --profile minimal --target claude
.\install.ps1 --profile minimal --target claude
# or
npx ecc-install --profile minimal --target claude

This profile intentionally excludes hooks-runtime.

If you want the normal core profile but need hooks off, use:

./install.sh --profile core --without baseline:hooks --target claude

Add hooks later only if you want runtime enforcement:

./install.sh --target claude --modules hooks-runtime

Find the right components first

If you are not sure which ECC profile or component to install, ask the packaged advisor from any project:

npx ecc consult "security reviews" --target claude

It returns matching components, related profiles, and preview/install commands. Use the preview command before installing if you want to inspect the exact file plan.

Step 1: Install the Plugin (Recommended)

NOTE: The plugin is convenient, but the OSS installer below is still the most reliable path if your Claude Code build has trouble resolving self-hosted marketplace entries.

# Add marketplace
/plugin marketplace add https://github.com/affaan-m/everything-claude-code

# Install plugin
/plugin install everything-claude-code@everything-claude-code

Naming + Migration Note

ECC now has three public identifiers, and they are not interchangeable:

  • GitHub source repo: affaan-m/everything-claude-code
  • Claude marketplace/plugin identifier: everything-claude-code@everything-claude-code
  • npm package: ecc-universal

This is intentional. Anthropic marketplace/plugin installs are keyed by a canonical plugin identifier, so ECC standardized on everything-claude-code@everything-claude-code to keep the listing name, /plugin install, /plugin list, and repo docs aligned to one public install surface. Older posts may still show the old short-form nickname; that shorthand is deprecated. Separately, the npm package stayed on ecc-universal, so npm installs and marketplace installs intentionally use different names.

Step 2: Install Rules (Required)

WARNING: Important: Claude Code plugins cannot distribute rules automatically.

If you already installed ECC via /plugin install, do not run ./install.sh --profile full, .\install.ps1 --profile full, or npx ecc-install --profile full afterward. The plugin already loads ECC skills, commands, and hooks. Running the full installer after a plugin install copies those same surfaces into your user directories and can create duplicate skills plus duplicate runtime behavior.

For plugin installs, manually copy only the rules/ directories you want under ~/.claude/rules/ecc/. Start with rules/common plus one language or framework pack you actually use. Do not copy every rules directory unless you explicitly want all of that context in Claude.

Use the full installer only when you are doing a fully manual ECC install instead of the plugin path.

If your local Claude setup was wiped or reset, that does not mean you need to repurchase ECC. Start with node scripts/ecc.js list-installed, then run node scripts/ecc.js doctor and node scripts/ecc.js repair before reinstalling anything. That usually restores ECC-managed files without rebuilding your setup. If the problem is account or marketplace access for ECC Tools, handle billing/account recovery separately.

# Clone the repo first
git clone https://github.com/affaan-m/everything-claude-code.git
cd everything-claude-code

# Install dependencies (pick your package manager)
npm install        # or: pnpm install | yarn install | bun install

# Plugin install path: copy only ECC rules into an ECC-owned namespace
mkdir -p ~/.claude/rules/ecc
cp -R rules/common ~/.claude/rules/ecc/
cp -R rules/typescript ~/.claude/rules/ecc/

# Fully manual ECC install path (use this instead of /plugin install)
# ./install.sh --profile full
# Windows PowerShell

# Plugin install path: copy only ECC rules into an ECC-owned namespace
New-Item -ItemType Directory -Force -Path "$HOME/.claude/rules/ecc" | Out-Null
Copy-Item -Recurse rules/common "$HOME/.claude/rules/ecc/"
Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/ecc/"

# Fully manual ECC install path (use this instead of /plugin install)
# .\install.ps1 --profile full
# npx ecc-install --profile full

For manual install instructions see the README in the rules/ folder. When copying rules manually, copy the whole language directory (for example rules/common or rules/golang), not the files inside it, so relative references keep working and filenames do not collide.

Fully manual install (Fallback)

Use this only if you are intentionally skipping the plugin path:

./install.sh --profile full
.\install.ps1 --profile full
# or
npx ecc-install --profile full

If you choose this path, stop there. Do not also run /plugin install.

Reset / Uninstall ECC

If ECC feels duplicated, intrusive, or broken, do not keep reinstalling it on top of itself.

  • Plugin path: remove the plugin from Claude Code, then delete the specific rule folders you manually copied under ~/.claude/rules/ecc/.
  • Manual installer / CLI path: from the repo root, preview removal first:
node scripts/uninstall.js --dry-run

Then remove ECC-managed files:

node scripts/uninstall.js

You can also use the lifecycle wrapper:

node scripts/ecc.js list-installed
node scripts/ecc.js doctor
node scripts/ecc.js repair
node scripts/ecc.js uninstall --dry-run

ECC only removes files recorded in its install-state. It will not delete unrelated files it did not install.

If you stacked methods, clean up in this order:

  1. Remove the Claude Code plugin install.
  2. Run the ECC uninstall command from the repo root to remove install-state-managed files.
  3. Delete any extra rule folders you copied manually and no longer want.
  4. Reinstall once, using a single path.

Step 3: Start Using

# Skills are the primary workflow surface.
# Existing slash-style command names still work while ECC migrates off commands/.

# Plugin install uses the canonical namespaced form
/everything-claude-code:plan "Add user authentication"

# Manual install keeps the shorter slash form:
# /plan "Add user authentication"

# Check available commands
/plugin list everything-claude-code@everything-claude-code

That's it! You now have access to 48 agents, 182 skills, and 68 legacy command shims.

Dashboard GUI

Launch the desktop dashboard to visually explore ECC components:

npm run dashboard
# or
python3 ./ecc_dashboard.py

Features:

  • Tabbed interface: Agents, Skills, Commands, Rules, Settings
  • Dark/Light theme toggle
  • Font customization (family & size)
  • Project logo in header and taskbar
  • Search and filter across all components

Multi-model commands require additional setup

WARNING: multi-* commands are not covered by the base plugin/rules install above.

To use /multi-plan, /multi-execute, /multi-backend, /multi-frontend, and /multi-workflow, you must also install the ccg-workflow runtime.

Initialize it with npx ccg-workflow.

That runtime provides the external dependencies these commands expect, including:

  • ~/.claude/bin/codeagent-wrapper
  • ~/.claude/.ccg/prompts/*

Without ccg-workflow, these multi-* commands will not run correctly.


Cross-Platform Support

This plugin now fully supports Windows, macOS, and Linux, alongside tight integration across major IDEs (Cursor, OpenCode, Antigravity) and CLI harnesses. All hooks and scripts have been rewritten in Node.js for maximum compatibility.

Package Manager Detection

The plugin automatically detects your preferred package manager (npm, pnpm, yarn, or bun) with the following priority:

  1. Environment variable: CLAUDE_PACKAGE_MANAGER
  2. Project config: .claude/package-manager.json
  3. package.json: packageManager field
  4. Lock file: Detection from package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb
  5. Global config: ~/.claude/package-manager.json
  6. Fallback: First available package manager

To set your preferred package manager:

# Via environment variable
export CLAUDE_PACKAGE_MANAGER=pnpm

# Via global config
node scripts/setup-package-manager.js --global pnpm

# Via project config
node scripts/setup-package-manager.js --project bun

# Detect current setting
node scripts/setup-package-manager.js --detect

Or use the /setup-pm command in Claude Code.

Hook Runtime Controls

Use runtime flags to tune strictness or disable specific hooks temporarily:

# Hook strictness profile (default: standard)
export ECC_HOOK_PROFILE=standard

# Comma-separated hook IDs to disable
export ECC_DISABLED_HOOKS="pre:bash:tmux-reminder,post:edit:typecheck"

# Cap SessionStart additional context (default: 8000 chars)
export ECC_SESSION_START_MAX_CHARS=4000

# Disable SessionStart additional context entirely for low-context/local-model setups
export ECC_SESSION_START_CONTEXT=off

What's Inside

This repo is a Claude Code plugin - install it directly or copy components manually.

everything-claude-code/
|-- .claude-plugin/   # Plugin and marketplace manifests
|   |-- plugin.json         # Plugin metadata and component paths
|   |-- marketplace.json    # Marketplace catalog for /plugin marketplace add
|
|-- agents/           # 36 specialized subagents for delegation
|   |-- planner.md           # Feature implementation planning
|   |-- architect.md         # System design decisions
|   |-- tdd-guide.md         # Test-driven development
|   |-- code-reviewer.md     # Quality and security review
|   |-- security-reviewer.md # Vulnerability analysis
|   |-- build-error-resolver.md
|   |-- e2e-runner.md        # Playwright E2E testing
|   |-- refactor-cleaner.md  # Dead code cleanup
|   |-- doc-updater.md       # Documentation sync
|   |-- docs-lookup.md       # Documentation/API lookup
|   |-- chief-of-staff.md    # Communication triage and drafts
|   |-- loop-operator.md     # Autonomous loop execution
|   |-- harness-optimizer.md # Harness config tuning
|   |-- cpp-reviewer.md      # C++ code review
|   |-- cpp-build-resolver.md # C++ build error resolution
|   |-- go-reviewer.md       # Go code review
|   |-- go-build-resolver.md # Go build error resolution
|   |-- python-reviewer.md   # Python code review
|   |-- database-reviewer.md # Database/Supabase review
|   |-- typescript-reviewer.md # TypeScript/JavaScript code review
|   |-- java-reviewer.md     # Java/Spring Boot code review
|   |-- java-build-resolver.md # Java/Maven/Gradle build errors
|   |-- kotlin-reviewer.md   # Kotlin/Android/KMP code review
|   |-- kotlin-build-resolver.md # Kotlin/Gradle build errors
|   |-- rust-reviewer.md     # Rust code review
|   |-- rust-build-resolver.md # Rust build error resolution
|   |-- pytorch-build-resolver.md # PyTorch/CUDA training errors
|
|-- skills/           # Workflow definitions and domain knowledge
|   |-- coding-standards/           # Language best practices
|   |-- clickhouse-io/              # ClickHouse analytics, queries, data engineering
|   |-- backend-patterns/           # API, database, caching patterns
|   |-- frontend-patterns/          # React, Next.js patterns
|   |-- frontend-slides/            # HTML slide decks and PPTX-to-web presentation workflows (NEW)
|   |-- article-writing/            # Long-form writing in a supplied voice without generic AI tone (NEW)
|   |-- content-engine/             # Multi-platform social content and repurposing workflows (NEW)
|   |-- market-research/            # Source-attributed market, competitor, and investor research (NEW)
|   |-- investor-materials/         # Pitch decks, one-pagers, memos, and financial models (NEW)
|   |-- investor-outreach/          # Personalized fundraising outreach and follow-up (NEW)
|   |-- continuous-learning/        # Legacy v1 Stop-hook pattern extraction
|   |-- continuous-learning-v2/     # Instinct-based learning with confidence scoring
|   |-- iterative-retrieval/        # Progressive context refinement for subagents
|   |-- strategic-compact/          # Manual compaction suggestions (Longform Guide)
|   |-- tdd-workflow/               # TDD methodology
|   |-- security-review/            # Security checklist
|   |-- eval-harness/               # Verification loop evaluation (Longform Guide)
|   |-- verification-loop/          # Continuous verification (Longform Guide)
|   |-- videodb/                   # Video and audio: ingest, search, edit, generate, stream (NEW)
|   |-- golang-patterns/            # Go idioms and best practices
|   |-- golang-testing/             # Go testing patterns, TDD, benchmarks
|   |-- cpp-coding-standards/         # C++ coding standards from C++ Core Guidelines (NEW)
|   |-- cpp-testing/                # C++ testing with GoogleTest, CMake/CTest (NEW)
|   |-- django-patterns/            # Django patterns, models, views (NEW)
|   |-- django-security/            # Django security best practices (NEW)
|   |-- django-tdd/                 # Django TDD workflow (NEW)
|   |-- django-verification/        # Django verification loops (NEW)
|   |-- laravel-patterns/           # Laravel architecture patterns (NEW)
|   |-- laravel-security/           # Laravel security best practices (NEW)
|   |-- laravel-tdd/                # Laravel TDD workflow (NEW)
|   |-- laravel-verification/       # Laravel verification loops (NEW)
|   |-- python-patterns/            # Python idioms and best practices (NEW)
|   |-- python-testing/             # Python testing with pytest (NEW)
|   |-- springboot-patterns/        # Java Spring Boot patterns (NEW)
|   |-- springboot-security/        # Spring Boot security (NEW)
|   |-- springboot-tdd/             # Spring Boot TDD (NEW)
|   |-- springboot-verification/    # Spring Boot verification (NEW)
|   |-- configure-ecc/              # Interactive installation wizard (NEW)
|   |-- security-scan/              # AgentShield security auditor integration (NEW)
|   |-- java-coding-standards/     # Java coding standards (NEW)
|   |-- jpa-patterns/              # JPA/Hibernate patterns (NEW)
|   |-- postgres-patterns/         # PostgreSQL optimization patterns (NEW)
|   |-- nutrient-document-processing/ # Document processing with Nutrient API (NEW)
|   |-- docs/examples/project-guidelines-template.md  # Template for project-specific skills
|   |-- database-migrations/         # Migration patterns (Prisma, Drizzle, Django, Go) (NEW)
|   |-- api-design/                  # REST API design, pagination, error responses (NEW)
|   |-- deployment-patterns/         # CI/CD, Docker, health checks, rollbacks (NEW)
|   |-- docker-patterns/            # Docker Compose, networking, volumes, container security (NEW)
|   |-- e2e-testing/                 # Playwright E2E patterns and Page Object Model (NEW)
|   |-- content-hash-cache-pattern/  # SHA-256 content hash caching for file processing (NEW)
|   |-- cost-aware-llm-pipeline/     # LLM cost optimization, model routing, budget tracking (NEW)
|   |-- regex-vs-llm-structured-text/ # Decision framework: regex vs LLM for text parsing (NEW)
|   |-- swift-actor-persistence/     # Thread-safe Swift data persistence with actors (NEW)
|   |-- swift-protocol-di-testing/   # Protocol-based DI for testable Swift code (NEW)
|   |-- search-first/               # Research-before-coding workflow (NEW)
|   |-- skill-stocktake/            # Audit skills and commands for quality (NEW)
|   |-- liquid-glass-design/         # iOS 26 Liquid Glass design system (NEW)
|   |-- foundation-models-on-device/ # Apple on-device LLM with FoundationModels (NEW)
|   |-- swift-concurrency-6-2/       # Swift 6.2 Approachable Concurrency (NEW)
|   |-- perl-patterns/             # Modern Perl 5.36+ idioms and best practices (NEW)
|   |-- perl-security/             # Perl security patterns, taint mode, safe I/O (NEW)
|   |-- perl-testing/              # Perl TDD with Test2::V0, prove, Devel::Cover (NEW)
|   |-- autonomous-loops/           # Autonomous loop patterns: sequential pipelines, PR loops, DAG orchestration (NEW)
|   |-- plankton-code-quality/      # Write-time code quality enforcement with Plankton hooks (NEW)
|
|-- commands/         # Maintained slash-entry compatibility; prefer skills/
|   |-- plan.md             # /plan - Implementation planning
|   |-- code-review.md      # /code-review - Quality review
|   |-- build-fix.md        # /build-fix - Fix build errors
|   |-- refactor-clean.md   # /refactor-clean - Dead code removal
|   |-- quality-gate.md     # /quality-gate - Verification gate
|   |-- learn.md            # /learn - Extract patterns mid-session (Longform Guide)
|   |-- learn-eval.md       # /learn-eval - Extract, evaluate, and save patterns (NEW)
|   |-- checkpoint.md       # /checkpoint - Save verification state (Longform Guide)
|   |-- setup-pm.md         # /setup-pm - Configure package manager
|   |-- go-review.md        # /go-review - Go code review (NEW)
|   |-- go-test.md          # /go-test - Go TDD workflow (NEW)
|   |-- go-build.md         # /go-build - Fix Go build errors (NEW)
|   |-- skill-create.md     # /skill-create - Generate skills from git history (NEW)
|   |-- instinct-status.md  # /instinct-status - View learned instincts (NEW)
|   |-- instinct-import.md  # /instinct-import - Import instincts (NEW)
|   |-- instinct-export.md  # /instinct-export - Export instincts (NEW)
|   |-- evolve.md           # /evolve - Cluster instincts into skills
|   |-- prune.md            # /prune - Delete expired pending instincts (NEW)
|   |-- pm2.md              # /pm2 - PM2 service lifecycle management (NEW)
|   |-- multi-plan.md       # /multi-plan - Multi-agent task decomposition (NEW)
|   |-- multi-execute.md    # /multi-execute - Orchestrated multi-agent workflows (NEW)
|   |-- multi-backend.md    # /multi-backend - Backend multi-service orchestration (NEW)
|   |-- multi-frontend.md   # /multi-frontend - Frontend multi-service orchestration (NEW)
|   |-- multi-workflow.md   # /multi-workflow - General multi-service workflows (NEW)
|   |-- sessions.md         # /sessions - Session history management
|   |-- test-coverage.md    # /test-coverage - Test coverage analysis
|   |-- update-docs.md      # /update-docs - Update documentation
|   |-- update-codemaps.md  # /update-codemaps - Update codemaps
|   |-- python-review.md    # /python-review - Python code review (NEW)
|-- legacy-command-shims/   # Opt-in archive for retired shims such as /tdd and /eval
|   |-- tdd.md              # /tdd - Prefer the tdd-workflow skill
|   |-- e2e.md              # /e2e - Prefer the e2e-testing skill
|   |-- eval.md             # /eval - Prefer the eval-harness skill
|   |-- verify.md           # /verify - Prefer the verification-loop skill
|   |-- orchestrate.md      # /orchestrate - Prefer dmux-workflows or multi-workflow
|
|-- rules/            # Always-follow guidelines (copy to ~/.claude/rules/ecc/)
|   |-- README.md            # Structure overview and installation guide
|   |-- common/              # Language-agnostic principles
|   |   |-- coding-style.md    # Immutability, file organization
|   |   |-- git-workflow.md    # Commit format, PR process
|   |   |-- testing.md         # TDD, 80% coverage requirement
|   |   |-- performance.md     # Model selection, context management
|   |   |-- patterns.md        # Design patterns, skeleton projects
|   |   |-- hooks.md           # Hook architecture, TodoWrite
|   |   |-- agents.md          # When to delegate to subagents
|   |   |-- security.md        # Mandatory security checks
|   |-- typescript/          # TypeScript/JavaScript specific
|   |-- python/              # Python specific
|   |-- golang/              # Go specific
|   |-- swift/               # Swift specific
|   |-- php/                 # PHP specific (NEW)
|
|-- hooks/            # Trigger-based automations
|   |-- README.md                 # Hook documentation, recipes, and customization guide
|   |-- hooks.json                # All hooks config (PreToolUse, PostToolUse, Stop, etc.)
|   |-- memory-persistence/       # Session lifecycle hooks (Longform Guide)
|   |-- strategic-compact/        # Compaction suggestions (Longform Guide)
|
|-- scripts/          # Cross-platform Node.js scripts (NEW)
|   |-- lib/                     # Shared utilities
|   |   |-- utils.js             # Cross-platform file/path/system utilities
|   |   |-- package-manager.js   # Package manager detection and selection
|   |-- hooks/                   # Hook implementations
|   |   |-- session-start.js     # Load context on session start
|   |   |-- session-end.js       # Save state on session end
|   |   |-- pre-compact.js       # Pre-compaction state saving
|   |   |-- suggest-compact.js   # Strategic compaction suggestions
|   |   |-- evaluate-session.js  # Extract patterns from sessions
|   |-- setup-package-manager.js # Interactive PM setup
|
|-- tests/            # Test suite (NEW)
|   |-- lib/                     # Library tests
|   |-- hooks/                   # Hook tests
|   |-- run-all.js               # Run all tests
|
|-- contexts/         # Dynamic system prompt injection contexts (Longform Guide)
|   |-- dev.md              # Development mode context
|   |-- review.md           # Code review mode context
|   |-- research.md         # Research/exploration mode context
|
|-- examples/         # Example configurations and sessions
|   |-- CLAUDE.md             # Example project-level config
|   |-- user-CLAUDE.md        # Example user-level config
|   |-- saas-nextjs-CLAUDE.md   # Real-world SaaS (Next.js + Supabase + Stripe)
|   |-- go-microservice-CLAUDE.md # Real-world Go microservice (gRPC + PostgreSQL)
|   |-- django-api-CLAUDE.md      # Real-world Django REST API (DRF + Celery)
|   |-- laravel-api-CLAUDE.md     # Real-world Laravel API (PostgreSQL + Redis) (NEW)
|   |-- rust-api-CLAUDE.md        # Real-world Rust API (Axum + SQLx + PostgreSQL) (NEW)
|
|-- mcp-configs/      # MCP server configurations
|   |-- mcp-servers.json    # GitHub, Supabase, Vercel, Railway, etc.
|
|-- ecc_dashboard.py  # Desktop GUI dashboard (Tkinter)
|
|-- assets/           # Assets for dashboard
|   |-- images/
|       |-- ecc-logo.png
|
|-- marketplace.json  # Self-hosted marketplace config (for /plugin marketplace add)

Ecosystem Tools

Skill Creator

Two ways to generate Claude Code skills from your repository:

Option A: Local Analysis (Built-in)

Use the /skill-create command for local analysis without external services:

/skill-create                    # Analyze current repo
/skill-create --instincts        # Also generate instincts for continuous-learning-v2

This analyzes your git history locally and generates SKILL.md files.

Option B: GitHub App (Advanced)

For advanced features (10k+ commits, auto-PRs, team sharing):

Install GitHub App | ecc.tools

# Comment on any issue:
/skill-creator analyze

# Or auto-triggers on push to default branch

Both options create:

  • SKILL.md files - Ready-to-use skills for Claude Code
  • Instinct collections - For continuous-learning-v2
  • Pattern extraction - Learns from your commit history

AgentShield — Security Auditor

Built at the Claude Code Hackathon (Cerebral Valley x Anthropic, Feb 2026). 1282 tests, 98% coverage, 102 static analysis rules.

Scan your Claude Code configuration for vulnerabilities, misconfigurations, and injection risks.

# Quick scan (no install needed)
npx ecc-agentshield scan

# Auto-fix safe issues
npx ecc-agentshield scan --fix

# Deep analysis with three Opus 4.6 agents
npx ecc-agentshield scan --opus --stream

# Generate secure config from scratch
npx ecc-agentshield init

What it scans: CLAUDE.md, settings.json, MCP configs, hooks, agent definitions, and skills across 5 categories — secrets detection (14 patterns), permission auditing, hook injection analysis, MCP server risk profiling, and agent config review.

The --opus flag runs three Claude Opus 4.6 agents in a red-team/blue-team/auditor pipeline. The attacker finds exploit chains, the defender evaluates protections, and the auditor synthesizes both into a prioritized risk assessment. Adversarial reasoning, not just pattern matching.

Output formats: Terminal (color-graded A-F), JSON (CI pipelines), Markdown, HTML. Exit code 2 on critical findings for build gates.

Use /security-scan in Claude Code to run it, or add to CI with the GitHub Action.

GitHub | npm

Continuous Learning v2

The instinct-based learning system automatically learns your patterns:

/instinct-status        # Show learned instincts with confidence
/instinct-import <file> # Import instincts from others
/instinct-export        # Export your instincts for sharing
/evolve                 # Cluster related instincts into skills

See skills/continuous-learning-v2/ for full documentation. Keep continuous-learning/ only when you explicitly want the legacy v1 Stop-hook learned-skill flow.


Requirements

Claude Code CLI Version

Minimum version: v2.1.0 or later

This plugin requires Claude Code CLI v2.1.0+ due to changes in how the plugin system handles hooks.

Check your version:

claude --version

Important: Hooks Auto-Loading Behavior

WARNING: For Contributors: Do NOT add a "hooks" field to .claude-plugin/plugin.json. This is enforced by a regression test.

Claude Code v2.1+ automatically loads hooks/hooks.json from any installed plugin by convention. Explicitly declaring it in plugin.json causes a duplicate detection error:

Duplicate hooks file detected: ./hooks/hooks.json resolves to already-loaded file

History: This has caused repeated fix/revert cycles in this repo (#29, #52, #103). The behavior changed between Claude Code versions, leading to confusion. We now have a regression test to prevent this from being reintroduced.


Installation

Option 1: Install as Plugin (Recommended)

The easiest way to use this repo - install as a Claude Code plugin:

# Add this repo as a marketplace
/plugin marketplace add https://github.com/affaan-m/everything-claude-code

# Install the plugin
/plugin install everything-claude-code@everything-claude-code

Or add directly to your ~/.claude/settings.json:

{
  "extraKnownMarketplaces": {
    "ecc": {
      "source": {
        "source": "github",
        "repo": "affaan-m/everything-claude-code"
      }
    }
  },
  "enabledPlugins": {
    "everything-claude-code@everything-claude-code": true
  }
}

This gives you instant access to all commands, agents, skills, and hooks.

Note: The Claude Code plugin system does not support distributing rules via plugins (upstream limitation). You need to install rules manually:

# Clone the repo first
git clone https://github.com/affaan-m/everything-claude-code.git

# Option A: User-level rules (applies to all projects)
mkdir -p ~/.claude/rules/ecc
cp -r everything-claude-code/rules/common ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/typescript ~/.claude/rules/ecc/   # pick your stack
cp -r everything-claude-code/rules/python ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/golang ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/php ~/.claude/rules/ecc/

# Option B: Project-level rules (applies to current project only)
mkdir -p .claude/rules/ecc
cp -r everything-claude-code/rules/common .claude/rules/ecc/
cp -r everything-claude-code/rules/typescript .claude/rules/ecc/     # pick your stack

Option 2: Manual Installation

If you prefer manual control over what's installed:

# Clone the repo
git clone https://github.com/affaan-m/everything-claude-code.git

# Copy agents to your Claude config
cp everything-claude-code/agents/*.md ~/.claude/agents/

# Copy rules directories (common + language-specific)
mkdir -p ~/.claude/rules/ecc
cp -r everything-claude-code/rules/common ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/typescript ~/.claude/rules/ecc/   # pick your stack
cp -r everything-claude-code/rules/python ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/golang ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/php ~/.claude/rules/ecc/

# Copy skills first (primary workflow surface)
# Recommended (new users): core/general skills only
mkdir -p ~/.claude/skills/ecc
cp -r everything-claude-code/.agents/skills/* ~/.claude/skills/ecc/
cp -r everything-claude-code/skills/search-first ~/.claude/skills/ecc/

# Optional: add niche/framework-specific skills only when needed
# for s in django-patterns django-tdd laravel-patterns springboot-patterns; do
# cp -r everything-claude-code/skills/$s ~/.claude/skills/ecc/
# done

# Optional: keep maintained slash-command compatibility during migration
mkdir -p ~/.claude/commands
cp everything-claude-code/commands/*.md ~/.claude/commands/

# Retired shims live in legacy-command-shims/commands/.
# Copy individual files from there only if you still need old names such as /tdd.

Install hooks

Do not copy the raw repo hooks/hooks.json into ~/.claude/settings.json or ~/.claude/hooks/hooks.json. That file is plugin/repo-oriented and is meant to be installed through the ECC installer or loaded as a plugin, so raw copying is not a supported manual install path.

Use the installer to install only the Claude hook runtime so command paths are rewritten correctly:

# macOS / Linux
bash ./install.sh --target claude --modules hooks-runtime
# Windows PowerShell
pwsh -File .\install.ps1 --target claude --modules hooks-runtime

That writes resolved hooks to ~/.claude/hooks/hooks.json and leaves any existing ~/.claude/settings.json untouched.

If you installed ECC via /plugin install, do not copy those hooks into settings.json. Claude Code v2.1+ already auto-loads plugin hooks/hooks.json, and duplicating them in settings.json causes duplicate execution and cross-platform hook conflicts.

Windows note: the Claude config directory is %USERPROFILE%\\.claude, not ~/claude.

Configure MCPs

Claude plugin installs intentionally do not auto-enable ECC's bundled MCP server definitions. This avoids overlong plugin MCP tool names on strict third-party gateways while keeping manual MCP setup available.

Use Claude Code's /mcp command or CLI-managed MCP setup for live Claude Code server changes. Use /mcp for Claude Code runtime disables; Claude Code persists those choices in ~/.claude.json.

For repo-local MCP access, copy desired MCP server definitions from mcp-configs/mcp-servers.json into a project-scoped .mcp.json.

If you already run your own copies of ECC-bundled MCPs, set:

export ECC_DISABLED_MCPS="github,context7,exa,playwright,sequential-thinking,memory"

ECC-managed install and Codex sync flows will skip or remove those bundled servers instead of re-adding duplicates. ECC_DISABLED_MCPS is an ECC install/sync filter, not a live Claude Code toggle.

Important: Replace YOUR_*_HERE placeholders with your actual API keys.


Key Concepts

Agents

Subagents handle delegated tasks with limited scope. Example:

---
name: code-reviewer
description: Reviews code for quality, security, and maintainability
tools: ["Read", "Grep", "Glob", "Bash"]
model: opus
---

You are a senior code reviewer...

Skills

Skills are the primary workflow surface. They can be invoked directly, suggested automatically, and reused by agents. ECC still ships maintained commands/ during migration, while retired short-name shims live under legacy-command-shims/ for explicit opt-in only. New workflow development should land in skills/ first.

# TDD Workflow

1. Define interfaces first
2. Write failing tests (RED)
3. Implement minimal code (GREEN)
4. Refactor (IMPROVE)
5. Verify 80%+ coverage

Hooks

Hooks fire on tool events. Example - warn about console.log:

{
  "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.(ts|tsx|js|jsx)$\"",
  "hooks": [{
    "type": "command",
    "command": "#!/bin/bash\ngrep -n 'console\\.log' \"$file_path\" && echo '[Hook] Remove console.log' >&2"
  }]
}

Rules

Rules are always-follow guidelines, organized into common/ (language-agnostic) + language-specific directories:

rules/
  common/          # Universal principles (always install)
  typescript/      # TS/JS specific patterns and tools
  python/          # Python specific patterns and tools
  golang/          # Go specific patterns and tools
  swift/           # Swift specific patterns and tools
  php/             # PHP specific patterns and tools

See rules/README.md for installation and structure details.


Which Agent Should I Use?

Not sure where to start? Use this quick reference. Skills are the canonical workflow surface; maintained slash entries stay available for command-first workflows.

I want to...Use this surfaceAgent used
Plan a new feature/everything-claude-code:plan "Add auth"planner
Design system architecture/everything-claude-code:plan + architect agentarchitect
Write code with tests firsttdd-workflow skilltdd-guide
Review code I just wrote/code-reviewcode-reviewer
Fix a failing build/build-fixbuild-error-resolver
Run end-to-end testse2e-testing skille2e-runner
Find security vulnerabilities/security-scansecurity-reviewer
Remove dead code/refactor-cleanrefactor-cleaner
Update documentation/update-docsdoc-updater
Review Go code/go-reviewgo-reviewer
Review Python code/python-reviewpython-reviewer
Review TypeScript/JavaScript code(invoke typescript-reviewer directly)typescript-reviewer
Audit database queries(auto-delegated)database-reviewer

Common Workflows

Slash forms below are shown where they remain part of the maintained command surface. Retired short-name shims such as /tdd and /eval live in legacy-command-shims/ for explicit opt-in only.

Starting a new feature:

/everything-claude-code:plan "Add user authentication with OAuth"
                                              → planner creates implementation blueprint
tdd-workflow skill                            → tdd-guide enforces write-tests-first
/code-review                                  → code-reviewer checks your work

Fixing a bug:

tdd-workflow skill                            → tdd-guide: write a failing test that reproduces it
                                              → implement the fix, verify test passes
/code-review                                  → code-reviewer: catch regressions

Preparing for production:

/security-scan                                → security-reviewer: OWASP Top 10 audit
e2e-testing skill                             → e2e-runner: critical user flow tests
/test-coverage                                → verify 80%+ coverage

FAQ

How do I check which agents/commands are installed?
/plugin list everything-claude-code@everything-claude-code

This shows all available agents, commands, and skills from the plugin.

My hooks aren't working / I see "Duplicate hooks file" errors

This is the most common issue. Do NOT add a "hooks" field to .claude-plugin/plugin.json. Claude Code v2.1+ automatically loads hooks/hooks.json from installed plugins. Explicitly declaring it causes duplicate detection errors. See #29, #52, #103.

Can I use ECC with Claude Code on a custom API endpoint or model gateway?

Yes. ECC does not hardcode Anthropic-hosted transport settings. It runs locally through Claude Code's normal CLI/plugin surface, so it works with:

  • Anthropic-hosted Claude Code
  • Official Claude Code gateway setups using ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN
  • Compatible custom endpoints that speak the Anthropic API Claude Code expects

Minimal example:

export ANTHROPIC_BASE_URL=https://your-gateway.example.com
export ANTHROPIC_AUTH_TOKEN=your-token
claude

If your gateway remaps model names, configure that in Claude Code rather than in ECC. ECC's hooks, skills, commands, and rules are model-provider agnostic once the claude CLI is already working.

Official references:

My context window is shrinking / Claude is running out of context

Too many MCP servers eat your context. Each MCP tool description consumes tokens from your 200k window, potentially reducing it to ~70k. SessionStart context is capped at 8000 characters by default; lower it with ECC_SESSION_START_MAX_CHARS=4000 or disable it with ECC_SESSION_START_CONTEXT=off for local-model or low-context setups.

Fix: Disable unused MCPs from Claude Code with /mcp. Claude Code writes those runtime choices to ~/.claude.json; .claude/settings.json and .claude/settings.local.json are not reliable toggles for already-loaded MCP servers.

Keep under 10 MCPs enabled and under 80 tools active.

Can I use only some components (e.g., just agents)?

Yes. Use Option 2 (manual installation) and copy only what you need:

# Just agents
cp everything-claude-code/agents/*.md ~/.claude/agents/

# Just rules
mkdir -p ~/.claude/rules/ecc/
cp -r everything-claude-code/rules/common ~/.claude/rules/ecc/

Each component is fully independent.

Does this work with Cursor / OpenCode / Codex / Antigravity?

Yes. ECC is cross-platform:

  • Cursor: Pre-translated configs in .cursor/. See Cursor IDE Support.
  • Gemini CLI: Experimental project-local support via .gemini/GEMINI.md and shared installer plumbing.
  • OpenCode: Full plugin support in .opencode/. See OpenCode Support.
  • Codex: First-class support for both macOS app and CLI, with adapter drift guards and SessionStart fallback. See PR #257.
  • Antigravity: Tightly integrated setup for workflows, skills, and flattened rules in .agent/. See Antigravity Guide.
  • Non-native harnesses: Manual fallback path for Grok and similar interfaces. See Manual Adaptation Guide.
  • Claude Code: Native — this is the primary target.
How do I contribute a new skill or agent?

See CONTRIBUTING.md. The short version:

  1. Fork the repo
  2. Create your skill in skills/your-skill-name/SKILL.md (with YAML frontmatter)
  3. Or create an agent in agents/your-agent.md
  4. Submit a PR with a clear description of what it does and when to use it

Running Tests

The plugin includes a comprehensive test suite:

# Run all tests
node tests/run-all.js

# Run individual test files
node tests/lib/utils.test.js
node tests/lib/package-manager.test.js
node tests/hooks/hooks.test.js

Contributing

Contributions are welcome and encouraged.

This repo is meant to be a community resource. If you have:

  • Useful agents or skills
  • Clever hooks
  • Better MCP configurations
  • Improved rules

Please contribute! See CONTRIBUTING.md for guidelines.

Ideas for Contributions

  • Language-specific skills (Rust, C#, Kotlin, Java) — Go, Python, Perl, Swift, and TypeScript already included
  • Framework-specific configs (Rails, FastAPI) — Django, NestJS, Spring Boot, and Laravel already included
  • DevOps agents (Kubernetes, Terraform, AWS, Docker)
  • Testing strategies (different frameworks, visual regression)
  • Domain-specific knowledge (ML, data engineering, mobile)

Community Ecosystem Notes

These are not bundled with ECC and are not audited by this repo, but they are worth knowing about if you are exploring the broader Claude Code skills ecosystem:


Cursor IDE Support

ECC provides Cursor IDE support with hooks, rules, agents, skills, commands, and MCP configs adapted for Cursor's project layout.

Quick Start (Cursor)

# macOS/Linux
./install.sh --target cursor typescript
./install.sh --target cursor python golang swift php
# Windows PowerShell
.\install.ps1 --target cursor typescript
.\install.ps1 --target cursor python golang swift php

What's Included

ComponentCountDetails
Hook Events15sessionStart, beforeShellExecution, afterFileEdit, beforeMCPExecution, beforeSubmitPrompt, and 10 more
Hook Scripts16Thin Node.js scripts delegating to scripts/hooks/ via shared adapter
Rules349 common (alwaysApply) + 25 language-specific (TypeScript, Python, Go, Swift, PHP)
Agents48.cursor/agents/ecc-*.md when installed; prefixed to avoid collisions with user or marketplace agents
SkillsShared + Bundled.cursor/skills/ for translated additions
CommandsShared.cursor/commands/ if installed
MCP ConfigShared.cursor/mcp.json if installed

Cursor Loading Notes

ECC does not install root AGENTS.md into .cursor/. Cursor treats nested AGENTS.md files as directory context, so copying ECC's repo identity into a host project would pollute that project.

Cursor-native loading behavior can vary by Cursor build. ECC installs agents as .cursor/agents/ecc-*.md; if your Cursor build does not expose project agents, those files still work as explicit reference definitions instead of hidden global prompt context.

Hook Architecture (DRY Adapter Pattern)

Cursor has more hook events than Claude Code (20 vs 8). The .cursor/hooks/adapter.js module transforms Cursor's stdin JSON to Claude Code's format, allowing existing scripts/hooks/*.js to be reused without duplication.

Cursor stdin JSON → adapter.js → transforms → scripts/hooks/*.js
                                              (shared with Claude Code)

Key hooks:

  • beforeShellExecution — Blocks dev servers outside tmux (exit 2), git push review
  • afterFileEdit — Auto-format + TypeScript check + console.log warning
  • beforeSubmitPrompt — Detects secrets (sk-, ghp_, AKIA patterns) in prompts
  • beforeTabFileRead — Blocks Tab from reading .env, .key, .pem files (exit 2)
  • beforeMCPExecution / afterMCPExecution — MCP audit logging

Rules Format

Cursor rules use YAML frontmatter with description, globs, and alwaysApply:

---
description: "TypeScript coding style extending common rules"
globs: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
alwaysApply: false
---

Codex macOS App + CLI Support

ECC provides first-class Codex support for both the macOS app and CLI, with a reference configuration, Codex-specific AGENTS.md supplement, and shared skills.

Quick Start (Codex App + CLI)

# Run Codex CLI in the repo — AGENTS.md and .codex/ are auto-detected
codex

# Automatic setup: sync ECC assets (AGENTS.md, skills, MCP servers) into ~/.codex
npm install && bash scripts/sync-ecc-to-codex.sh
# or: pnpm install && bash scripts/sync-ecc-to-codex.sh
# or: yarn install && bash scripts/sync-ecc-to-codex.sh
# or: bun install && bash scripts/sync-ecc-to-codex.sh

# Or manually: copy the reference config to your home directory
cp .codex/config.toml ~/.codex/config.toml

The sync script safely merges ECC MCP servers into your existing ~/.codex/config.toml using an add-only strategy — it never removes or modifies your existing servers. Run with --dry-run to preview changes, or --update-mcp to force-refresh ECC servers to the latest recommended config.

For Context7, ECC uses the canonical Codex section name [mcp_servers.context7] while still launching the @upstash/context7-mcp package. If you already have a legacy [mcp_servers.context7-mcp] entry, --update-mcp migrates it to the canonical section name.

Codex macOS app:

  • Open this repository as your workspace.
  • The root AGENTS.md is auto-detected.
  • .codex/config.toml and .codex/agents/*.toml work best when kept project-local.
  • The reference .codex/config.toml intentionally does not pin model or model_provider, so Codex uses its own current default unless you override it.
  • Optional: copy .codex/config.toml to ~/.codex/config.toml for global defaults; keep the multi-agent role files project-local unless you also copy .codex/agents/.

What's Included

ComponentCountDetails
Config1.codex/config.toml — top-level approvals/sandbox/web_search, MCP servers, notifications, profiles
AGENTS.md2Root (universal) + .codex/AGENTS.md (Codex-specific supplement)
Skills32.agents/skills/ — SKILL.md + agents/openai.yaml per skill
MCP Servers6GitHub, Context7, Exa, Memory, Playwright, Sequential Thinking (7 with Supabase via --update-mcp sync)
Profiles2strict (read-only sandbox) and yolo (full auto-approve)
Agent Roles3.codex/agents/ — explorer, reviewer, docs-researcher

Skills

Skills at .agents/skills/ are auto-loaded by Codex:

Canonical Anthropic skills such as claude-api, frontend-design, and skill-creator are intentionally not re-bundled here. Install those from anthropics/skills when you want the official versions.

SkillDescription
agent-introspection-debuggingDebug agent behavior, routing, and prompt boundaries
agent-sortSort agent catalogs and assignment surfaces
api-designREST API design patterns
article-writingLong-form writing from notes and voice references
backend-patternsAPI design, database, caching
brand-voiceSource-derived writing style profiles from real content
bun-runtimeBun as runtime, package manager, bundler, and test runner
coding-standardsUniversal coding standards
content-enginePlatform-native social content and repurposing
crosspostMulti-platform content distribution across X, LinkedIn, Threads
deep-researchMulti-source research with synthesis and source attribution
dmux-workflowsMulti-agent orchestration using tmux pane manager
documentation-lookupUp-to-date library and framework docs via Context7 MCP
e2e-testingPlaywright E2E tests
eval-harnessEval-driven development
everything-claude-codeDevelopment conventions and patterns for the project
exa-searchNeural search via Exa MCP for web, code, company research
fal-ai-mediaUnified media generation for images, video, and audio
frontend-patternsReact/Next.js patterns
frontend-slidesHTML presentations, PPTX conversion, visual style exploration
investor-materialsDecks, memos, models, and one-pagers
investor-outreachPersonalized outreach, follow-ups, and intro blurbs
market-researchSource-attributed market and competitor research
mcp-server-patternsBuild MCP servers with Node/TypeScript SDK
nextjs-turbopackNext.js 16+ and Turbopack incremental bundling
product-capabilityTranslate product goals into scoped capability maps
security-reviewComprehensive security checklist
strategic-compactContext management
tdd-workflowTest-driven development with 80%+ coverage
verification-loopBuild, test, lint, typecheck, security
video-editingAI-assisted video editing workflows with FFmpeg and Remotion
x-apiX/Twitter API integration for posting and analytics

Key Limitation

Codex does not yet provide Claude-style hook execution parity. ECC enforcement there is instruction-based via AGENTS.md, optional model_instructions_file overrides, and sandbox/approval settings.

Multi-Agent Support

Current Codex builds support stable multi-agent workflows.

  • Enable features.multi_agent = true in .codex/config.toml
  • Define roles under [agents.<name>]
  • Point each role at a file under .codex/agents/
  • Use /agent in the CLI to inspect or steer child agents

ECC ships three sample role configs:

RolePurpose
explorerRead-only codebase evidence gathering before edits
reviewerCorrectness, security, and missing-test review
docs_researcherDocumentation and API verification before release/docs changes

OpenCode Support

ECC provides full OpenCode support including plugins and hooks.

Quick Start

# Install OpenCode
npm install -g opencode

# Run in the repository root
opencode

The configuration is automatically detected from .opencode/opencode.json.

Feature Parity

FeatureClaude CodeOpenCodeStatus
AgentsPASS: 48 agentsPASS: 12 agentsClaude Code leads
CommandsPASS: 68 commandsPASS: 31 commandsClaude Code leads
SkillsPASS: 182 skillsPASS: 37 skillsClaude Code leads
HooksPASS: 8 event typesPASS: 11 eventsOpenCode has more!
RulesPASS: 29 rulesPASS: 13 instructionsClaude Code leads
MCP ServersPASS: 14 serversPASS: FullFull parity
Custom ToolsPASS: Via hooksPASS: 6 native toolsOpenCode is better

Hook Support via Plugins

OpenCode's plugin system is MORE sophisticated than Claude Code with 20+ event types:

Claude Code HookOpenCode Plugin Event
PreToolUsetool.execute.before
PostToolUsetool.execute.after
Stopsession.idle
SessionStartsession.created
SessionEndsession.deleted

Additional OpenCode events: file.edited, file.watcher.updated, message.updated, lsp.client.diagnostics, tui.toast.show, and more.

Maintained Slash Entries

CommandDescription
/planCreate implementation plan
/code-reviewReview code changes
/build-fixFix build errors
/refactor-cleanRemove dead code
/learnExtract patterns from session
/checkpointSave verification state
/quality-gateRun the maintained verification gate
/update-docsUpdate documentation
/update-codemapsUpdate codemaps
/test-coverageAnalyze coverage
/go-reviewGo code review
/go-testGo TDD workflow
/go-buildFix Go build errors
/python-reviewPython code review (PEP 8, type hints, security)
/multi-planMulti-model collaborative planning
/multi-executeMulti-model collaborative execution
/multi-backendBackend-focused multi-model workflow
/multi-frontendFrontend-focused multi-model workflow
/multi-workflowFull multi-model development workflow
/pm2Auto-generate PM2 service commands
/sessionsManage session history
/skill-createGenerate skills from git
/instinct-statusView learned instincts
/instinct-importImport instincts
/instinct-exportExport instincts
/evolveCluster instincts into skills
/promotePromote project instincts to global scope
/projectsList known projects and instinct stats
/pruneDelete expired pending instincts (30d TTL)
/learn-evalExtract and evaluate patterns before saving
/setup-pmConfigure package manager
/harness-auditAudit harness reliability, eval readiness, and risk posture
/loop-startStart controlled agentic loop execution pattern
/loop-statusInspect active loop status and checkpoints
/quality-gateRun quality gate checks for paths or entire repo
/model-routeRoute tasks to models by complexity and budget

Plugin Installation

Option 1: Use directly

cd everything-claude-code
opencode

Option 2: Install as npm package

npm install ecc-universal

Then add to your opencode.json:

{
  "plugin": ["ecc-universal"]
}

That npm plugin entry enables ECC's published OpenCode plugin module (hooks/events and plugin tools). It does not automatically add ECC's full command/agent/instruction catalog to your project config.

For the full ECC OpenCode setup, either:

  • run OpenCode inside this repository, or
  • copy the bundled .opencode/ config assets into your project and wire the instructions, agent, and command entries in opencode.json

Documentation

  • Migration Guide: .opencode/MIGRATION.md
  • OpenCode Plugin README: .opencode/README.md
  • Consolidated Rules: .opencode/instructions/INSTRUCTIONS.md
  • LLM Documentation: llms.txt (complete OpenCode docs for LLMs)

Cross-Tool Feature Parity

ECC is the first plugin to maximize every major AI coding tool. Here's how each harness compares:

FeatureClaude CodeCursor IDECodex CLIOpenCode
Agents48Shared (AGENTS.md)Shared (AGENTS.md)12
Commands68SharedInstruction-based31
Skills182Shared10 (native format)37
Hook Events8 types15 typesNone yet11 types
Hook Scripts20+ scripts16 scripts (DRY adapter)N/APlugin hooks
Rules34 (common + lang)34 (YAML frontmatter)Instruction-based13 instructions
Custom ToolsVia hooksVia hooksN/A6 native tools
MCP Servers14Shared (mcp.json)7 (auto-merged via TOML parser)Full
Config Formatsettings.jsonhooks.json + rules/config.tomlopencode.json
Context FileCLAUDE.md + AGENTS.mdAGENTS.mdAGENTS.mdAGENTS.md
Secret DetectionHook-basedbeforeSubmitPrompt hookSandbox-basedHook-based
Auto-FormatPostToolUse hookafterFileEdit hookN/Afile.edited hook
VersionPluginPluginReference config2.0.0-rc.1

Key architectural decisions:

  • AGENTS.md at root is the universal cross-tool file (read by all 4 tools)
  • DRY adapter pattern lets Cursor reuse Claude Code's hook scripts without duplication
  • Skills format (SKILL.md with YAML frontmatter) works across Claude Code, Codex, and OpenCode
  • Codex's lack of hooks is compensated by AGENTS.md, optional model_instructions_file overrides, and sandbox permissions

Background

I've been using Claude Code since the experimental rollout. Won the Anthropic x Forum Ventures hackathon in Sep 2025 with @DRodriguezFX — built zenith.chat entirely using Claude Code.

These configs are battle-tested across multiple production applications.


Token Optimization

Claude Code usage can be expensive if you don't manage token consumption. These settings significantly reduce costs without sacrificing quality.

Recommended Settings

Add to ~/.claude/settings.json:

{
  "model": "sonnet",
  "env": {
    "MAX_THINKING_TOKENS": "10000",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50"
  }
}
SettingDefaultRecommendedImpact
modelopussonnet~60% cost reduction; handles 80%+ of coding tasks
MAX_THINKING_TOKENS31,99910,000~70% reduction in hidden thinking cost per request
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE9550Compacts earlier — better quality in long sessions

Switch to Opus only when you need deep architectural reasoning:

/model opus

Daily Workflow Commands

CommandWhen to Use
/model sonnetDefault for most tasks
/model opusComplex architecture, debugging, deep reasoning
/clearBetween unrelated tasks (free, instant reset)
/compactAt logical task breakpoints (research done, milestone complete)
/costMonitor token spending during session

Strategic Compaction

The strategic-compact skill (included in this plugin) suggests /compact at logical breakpoints instead of relying on auto-compaction at 95% context. See skills/strategic-compact/SKILL.md for the full decision guide.

When to compact:

  • After research/exploration, before implementation
  • After completing a milestone, before starting the next
  • After debugging, before continuing feature work
  • After a failed approach, before trying a new one

When NOT to compact:

  • Mid-implementation (you'll lose variable names, file paths, partial state)

Context Window Management

Critical: Don't enable all MCPs at once. Each MCP tool description consumes tokens from your 200k window, potentially reducing it to ~70k.

  • Keep under 10 MCPs enabled per project
  • Keep under 80 tools active
  • Use /mcp to disable unused Claude Code MCP servers; those runtime choices persist in ~/.claude.json
  • Use ECC_DISABLED_MCPS only to filter ECC-generated MCP configs during install/sync flows

Agent Teams Cost Warning

Agent Teams spawns multiple context windows. Each teammate consumes tokens independently. Only use for tasks where parallelism provides clear value (multi-module work, parallel reviews). For simple sequential tasks, subagents are more token-efficient.


WARNING: Important Notes

Token Optimization

Hitting daily limits? See the Token Optimization Guide for recommended settings and workflow tips.

Quick wins:

// ~/.claude/settings.json
{
  "model": "sonnet",
  "env": {
    "MAX_THINKING_TOKENS": "10000",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50",
    "CLAUDE_CODE_SUBAGENT_MODEL": "haiku"
  }
}

Use /clear between unrelated tasks, /compact at logical breakpoints, and /cost to monitor spending.

Customization

These configs work for my workflow. You should:

  1. Start with what resonates
  2. Modify for your stack
  3. Remove what you don't use
  4. Add your own patterns

Community Projects

Projects built on or inspired by Everything Claude Code:

ProjectDescription
EVCMarketing agent workspace — 42 commands for content operators, brand governance, and multi-channel publishing. Visual overview.

Built something with ECC? Open a PR to add it here.


Sponsors

This project is free and open source. Sponsors help keep it maintained and growing.

Become a Sponsor | Sponsor Tiers | Sponsorship Program


Star History

Star History Chart


Links


License

MIT - Use freely, modify as needed, contribute back if you can.


Star this repo if it helps. Read both guides. Build something great.