chore: preserve WIP home migration review fixes after upstream replacement

Merge current main and retain local review fixes for recovery only. Upstream now contains maintainer implementation 8cfbc267 for issue 3116; this commit is not proposed as PR delivery. Targeted migration, lifecycle, adapter and executor checks pass; full repository CI has not run for this revision.
This commit is contained in:
Dante committed 2026-10-02 08:36:34 +08:00
commit 9cccf7dca5
1044 files changed
+100271 -4123

No files matched your search

+2 -1
View File
@@ -1,6 +1,6 @@
# ECC for AdaL CLI
This directory contains the ECC (Everything Claude Code) configuration for the AdaL CLI harness.
This directory contains the ECC configuration for the AdaL CLI harness.
## What is installed
@@ -20,3 +20,4 @@ bash ./install.sh --target adal --profile minimal
- The `adal` target installs into the project-level `./.adal/` directory.
- AdaL's own config (`~/.adal/settings.json`, MCP servers, plugins) is **not** touched by ECC install.
- Use `npx ecc-universal doctor --target adal` to check install health.
- use an installed
+1 -1
View File
@@ -6,7 +6,7 @@
"plugins": [
{
"name": "ecc",
"version": "2.2.1",
"version": "2.2.3",
"source": {
"source": "local",
"path": "./"
@@ -1,6 +1,7 @@
---
name: agent-introspection-debugging
description: Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.
license: MIT
---
# Agent Introspection Debugging
+1
View File
@@ -1,6 +1,7 @@
---
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.
license: MIT
---
# Agent Sort
+1
View File
@@ -1,6 +1,7 @@
---
name: api-design
description: REST API design patterns including resource naming, status codes, pagination, filtering, error responses, versioning, and rate limiting for production APIs. Use when designing or reviewing REST endpoints, resource names, status codes, pagination, or versioning.
license: MIT
---
# API Design Patterns
+1
View File
@@ -1,6 +1,7 @@
---
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.
license: MIT
---
# Article Writing
+1
View File
@@ -1,6 +1,7 @@
---
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. Use when building or reviewing Node.js, Express, or Next.js API routes and their data access.
license: MIT
---
# Backend Development Patterns
@@ -6,6 +6,7 @@ description: >-
visual craft, offer packaging, evidence, enterprise-readiness, thought
leadership, pricing, client's strategic tension) with explicit 1–5 rubrics
and a tension-plot. Precedes competitive-report-structure.
license: MIT
---
# Benchmark Methodology
+1
View File
@@ -6,6 +6,7 @@ description: >-
personality, voice, narrative, and founder-brand tension across 8 modules
using laddering, 5 Whys, and projective techniques. Produces a resumable
session with disk-persisted state and a master brandbook (90_SYNTHESIS.md).
license: MIT
---
# Brand Discovery
+1
View File
@@ -1,6 +1,7 @@
---
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.
license: MIT
---
# Brand Voice
+1
View File
@@ -1,6 +1,7 @@
---
name: bun-runtime
description: Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel support.
license: MIT
---
# Bun Runtime
+1
View File
@@ -1,6 +1,7 @@
---
name: coding-standards
description: Baseline cross-project coding conventions for naming, readability, immutability, and code-quality review. Use detailed frontend or backend skills for framework-specific patterns. Use when reviewing code quality or naming with no framework-specific skill that applies.
license: MIT
---
# Coding Standards & Best Practices
@@ -6,6 +6,7 @@ description: >-
counts as a competitor, which tier they belong to, and which sources to mine.
First step in the three-skill competitive pipeline; precedes
benchmark-methodology.
license: MIT
---
# Competitive Platform Analysis
@@ -6,6 +6,7 @@ description: >-
profiles, benchmarking matrix, white-space analysis, strategic recommendations,
and team alignment trigger questions. Final step in the three-skill competitive
pipeline.
license: MIT
---
# Competitive Report Structure
+1
View File
@@ -1,6 +1,7 @@
---
name: content-engine
description: Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.
license: MIT
---
# Content Engine
+1
View File
@@ -1,6 +1,7 @@
---
name: crosspost
description: Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.
license: MIT
---
# Crosspost
+1
View File
@@ -1,6 +1,7 @@
---
name: deep-research
description: Multi-source deep research using firecrawl and exa MCPs. Searches the web, synthesizes findings, and delivers cited reports with source attribution. Use when the user wants thorough research on any topic with evidence and citations.
license: MIT
---
# Deep Research
+1
View File
@@ -1,6 +1,7 @@
---
name: dmux-workflows
description: Multi-agent orchestration using dmux (tmux pane manager for AI agents). Patterns for parallel agent workflows across Claude Code, Codex, OpenCode, and other harnesses. Use when running multiple agent sessions in parallel or coordinating multi-agent development workflows.
license: MIT
---
# dmux Workflows
@@ -1,6 +1,7 @@
---
name: documentation-lookup
description: Use up-to-date library and framework docs via Context7 MCP instead of training data. Activates for setup questions, API references, code examples, or when the user names a framework (e.g. React, Next.js, Prisma).
license: MIT
---
# Documentation Lookup (Context7)
+1
View File
@@ -1,6 +1,7 @@
---
name: e2e-testing
description: Playwright E2E testing patterns, Page Object Model, configuration, CI/CD integration, artifact management, and flaky test strategies. Use when writing Playwright tests, structuring page objects, or fixing flaky E2E runs in CI.
license: MIT
---
# E2E Testing Patterns
@@ -1,15 +1,16 @@
---
name: everything-claude-code
description: Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.
name: ecc-conventions
description: Development conventions and patterns for ECC. JavaScript project with conventional commits.
license: MIT
---
# Everything Claude Code Conventions
# ECC Conventions
> Generated from [affaan-m/everything-claude-code](https://github.com/affaan-m/everything-claude-code) on 2026-03-20
> Generated from [affaan-m/ECC](https://github.com/affaan-m/ECC) on 2026-03-20
## Overview
This skill teaches Claude the development patterns and conventions used in everything-claude-code.
This skill teaches Claude the development patterns and conventions used in ECC.
## Tech Stack
@@ -0,0 +1,7 @@
interface:
display_name: "ECC"
short_description: "Repo workflows and conventions for ECC"
brand_color: "#0EA5E9"
default_prompt: "Use $ecc-conventions to follow this repository's conventions and workflows."
policy:
allow_implicit_invocation: true
+1
View File
@@ -2,6 +2,7 @@
name: eval-harness
description: Formal evaluation framework for Claude Code sessions implementing eval-driven development (EDD) principles. Use when a Claude Code workflow needs a formal eval before it is trusted or changed.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
license: MIT
---
# Eval Harness Skill
@@ -1,7 +0,0 @@
interface:
display_name: "Everything Claude Code"
short_description: "Repo workflows for everything-claude-code"
brand_color: "#0EA5E9"
default_prompt: "Use $everything-claude-code to follow this repository's conventions and workflows."
policy:
allow_implicit_invocation: true
+1
View File
@@ -1,6 +1,7 @@
---
name: exa-search
description: Neural search via Exa MCP for web, code, and company research. Use when the user needs web search, code examples, company intel, people lookup, or AI-powered deep research with Exa's neural search engine.
license: MIT
---
# Exa Search
+1
View File
@@ -1,6 +1,7 @@
---
name: fal-ai-media
description: Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.
license: MIT
---
# fal.ai Media Generation
@@ -1,6 +1,7 @@
---
name: frontend-patterns
description: Frontend development patterns for React, Next.js, state management, performance optimization, and UI best practices. Use when building or reviewing React or Next.js components, state, or render performance.
license: MIT
---
# Frontend Development Patterns
+1
View File
@@ -1,6 +1,7 @@
---
name: frontend-slides
description: Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
license: MIT
---
# Frontend Slides
@@ -1,6 +1,7 @@
---
name: investor-materials
description: Create and update pitch decks, one-pagers, investor memos, accelerator applications, financial models, and fundraising materials. Use when the user needs investor-facing documents, projections, use-of-funds tables, milestone plans, or materials that must stay internally consistent across multiple fundraising assets.
license: MIT
---
# Investor Materials
@@ -1,6 +1,7 @@
---
name: investor-outreach
description: Draft cold emails, warm intro blurbs, follow-ups, update emails, and investor communications for fundraising. Use when the user wants outreach to angels, VCs, strategic investors, or accelerators and needs concise, personalized, investor-facing messaging.
license: MIT
---
# Investor Outreach
+1
View File
@@ -1,6 +1,7 @@
---
name: market-research
description: Conduct market research, competitive analysis, investor due diligence, and industry intelligence with source attribution and decision-oriented summaries. Use when the user wants market sizing, competitor comparisons, fund research, technology scans, or research that informs business decisions.
license: MIT
---
# Market Research
@@ -1,6 +1,7 @@
---
name: mcp-server-patterns
description: Build MCP servers with Node/TypeScript SDK — tools, resources, prompts, Zod validation, stdio vs Streamable HTTP. Use Context7 or official MCP docs for latest API. Use when building or debugging an MCP server — tools, resources, prompts, validation, or transport choice.
license: MIT
---
# MCP Server Patterns
+1
View File
@@ -2,6 +2,7 @@
name: mle-workflow
description: Production machine-learning engineering workflow for data contracts, reproducible training, model evaluation, deployment, monitoring, and rollback. Use when building, reviewing, or hardening ML systems beyond one-off notebooks.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
license: MIT
---
# Machine Learning Engineering Workflow
+1
View File
@@ -1,6 +1,7 @@
---
name: nextjs-turbopack
description: Next.js 16+ and Turbopack — incremental bundling, FS caching, dev speed, and when to use Turbopack vs webpack.
license: MIT
---
# Next.js and Turbopack
+1
View File
@@ -3,6 +3,7 @@ name: plan-canvas
description: Open plans and HTML artifacts in a local browser canvas where the human annotates elements, chats, and approves or requests changes without leaving the page. Use when presenting a plan for review, or when feedback like "move this, change that" is easier pointed at than typed.
metadata:
origin: ECC
license: MIT
---
# Plan Canvas
@@ -1,6 +1,7 @@
---
name: product-capability
description: Translate PRD intent, roadmap asks, or product discussions into an implementation-ready capability plan that exposes constraints, invariants, interfaces, and unresolved decisions before multi-service work starts. Use when the user needs an ECC-native PRD-to-SRS lane instead of vague planning prose.
license: MIT
---
# Product Capability
+1
View File
@@ -1,6 +1,7 @@
---
name: security-review
description: Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment/sensitive features. Provides comprehensive security checklist and patterns.
license: MIT
---
# Security Review Skill
@@ -1,6 +1,7 @@
---
name: strategic-compact
description: Suggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction. Use when a session is approaching a context limit and a task phase is a natural place to compact.
license: MIT
---
# Strategic Compact Skill
+1
View File
@@ -1,6 +1,7 @@
---
name: tdd-workflow
description: Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.
license: MIT
---
# Test-Driven Development Workflow
+1
View File
@@ -1,6 +1,7 @@
---
name: unified-memory
description: Share durable, inspectable context and handoffs between Claude, Codex, Hermes, Cursor, OpenCode, and other agents through the local ECC Memory Vault. Use when an agent must save work state, transfer context, resume another agent's task, or search shared project knowledge.
license: MIT
---
# Unified Memory
@@ -1,6 +1,7 @@
---
name: verification-loop
description: "A comprehensive verification system for Claude Code sessions. Use when verifying a Claude Code session's work before claiming it is complete."
license: MIT
---
# Verification Loop Skill
+1
View File
@@ -1,6 +1,7 @@
---
name: video-editing
description: AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.
license: MIT
---
# Video Editing
+1
View File
@@ -1,6 +1,7 @@
---
name: x-api
description: X/Twitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.
license: MIT
---
# X API
+1 -1
View File
@@ -162,7 +162,7 @@ Keep this field in `.claude-plugin/plugin.json`:
```
This explicit empty object prevents Claude plugin installs from auto-loading ECC's root MCP definitions.
Without the opt-out, strict OpenAI-compatible gateways can reject plugin MCP tool names such as `mcp__plugin_everything-claude-code_github__create_pull_request_review` because they exceed 64 characters.
Without the opt-out, strict OpenAI-compatible gateways can reject long plugin MCP tool names such as the legacy-install name `mcp__plugin_everything-claude-code_github__create_pull_request_review` because they exceed 64 characters.
Users who want the bundled MCP servers should configure them manually from `.mcp.json` or `mcp-configs/mcp-servers.json`.
+2 -2
View File
@@ -11,8 +11,8 @@
{
"name": "ecc",
"source": "./",
"description": "Harness-native ECC operator layer - 68 agents, 292 skills, 94 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses",
"version": "2.2.1",
"description": "Harness-native ECC operator layer - 68 agents, 293 skills, 94 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses",
"version": "2.2.3",
"author": {
"name": "Affaan Mustafa",
"email": "me@affaanmustafa.com"
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "ecc",
"version": "2.2.1",
"description": "Harness-native ECC plugin for engineering teams - 68 agents, 292 skills, 94 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses",
"version": "2.2.3",
"description": "Harness-native ECC plugin for engineering teams - 68 agents, 293 skills, 94 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses",
"author": {
"name": "Affaan Mustafa",
"url": "https://x.com/affaanmustafa"
+2 -2
View File
@@ -1,12 +1,12 @@
---
name: add-language-rules
description: Workflow command scaffold for add-language-rules in everything-claude-code.
description: Workflow command scaffold for add-language-rules in ECC.
allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"]
---
# /add-language-rules
Use this workflow when working on **add-language-rules** in `everything-claude-code`.
Use this workflow when working on **add-language-rules** in ECC.
## Goal
+2 -2
View File
@@ -1,12 +1,12 @@
---
name: database-migration
description: Workflow command scaffold for database-migration in everything-claude-code.
description: Workflow command scaffold for database-migration in ECC.
allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"]
---
# /database-migration
Use this workflow when working on **database-migration** in `everything-claude-code`.
Use this workflow when working on **database-migration** in ECC.
## Goal
+2 -2
View File
@@ -1,12 +1,12 @@
---
name: feature-development
description: Workflow command scaffold for feature-development in everything-claude-code.
description: Workflow command scaffold for feature-development in ECC.
allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"]
---
# /feature-development
Use this workflow when working on **feature-development** in `everything-claude-code`.
Use this workflow when working on **feature-development** in ECC.
## Goal
+27 -35
View File
@@ -3,7 +3,7 @@
"schemaVersion": "1.0",
"generatedBy": "ecc-tools",
"generatedAt": "2026-03-20T12:07:36.496Z",
"repo": "https://github.com/affaan-m/everything-claude-code",
"repo": "https://github.com/affaan-m/ECC",
"profiles": {
"requested": "full",
"recommended": "full",
@@ -134,19 +134,18 @@
"enterprise-controls"
],
"managedFiles": [
".claude/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/agents/openai.yaml",
".agents/skills/ecc-conventions/SKILL.md",
".agents/skills/ecc-conventions/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml",
".claude/rules/everything-claude-code-guardrails.md",
".claude/research/everything-claude-code-research-playbook.md",
".claude/team/everything-claude-code-team-config.json",
".claude/homunculus/instincts/inherited/ecc-instincts.yaml",
".claude/rules/ecc-guardrails.md",
".claude/research/ecc-research-playbook.md",
".claude/team/ecc-team-config.json",
".claude/enterprise/controls.md",
".claude/commands/database-migration.md",
".claude/commands/feature-development.md",
@@ -154,25 +153,24 @@
],
"packageFiles": {
"runtime-core": [
".claude/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/agents/openai.yaml",
".agents/skills/ecc-conventions/SKILL.md",
".agents/skills/ecc-conventions/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml"
".claude/homunculus/instincts/inherited/ecc-instincts.yaml"
],
"agentshield-pack": [
".claude/rules/everything-claude-code-guardrails.md"
".claude/rules/ecc-guardrails.md"
],
"research-pack": [
".claude/research/everything-claude-code-research-playbook.md"
".claude/research/ecc-research-playbook.md"
],
"team-config-sync": [
".claude/team/everything-claude-code-team-config.json"
".claude/team/ecc-team-config.json"
],
"enterprise-controls": [
".claude/enterprise/controls.md"
@@ -185,25 +183,24 @@
},
"moduleFiles": {
"runtime-core": [
".claude/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/agents/openai.yaml",
".agents/skills/ecc-conventions/SKILL.md",
".agents/skills/ecc-conventions/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml"
".claude/homunculus/instincts/inherited/ecc-instincts.yaml"
],
"agentshield-pack": [
".claude/rules/everything-claude-code-guardrails.md"
".claude/rules/ecc-guardrails.md"
],
"research-pack": [
".claude/research/everything-claude-code-research-playbook.md"
".claude/research/ecc-research-playbook.md"
],
"team-config-sync": [
".claude/team/everything-claude-code-team-config.json"
".claude/team/ecc-team-config.json"
],
"enterprise-controls": [
".claude/enterprise/controls.md"
@@ -217,17 +214,12 @@
"files": [
{
"moduleId": "runtime-core",
"path": ".claude/skills/everything-claude-code/SKILL.md",
"description": "Repository-specific Claude Code skill generated from git history."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/everything-claude-code/SKILL.md",
"path": ".agents/skills/ecc-conventions/SKILL.md",
"description": "Codex-facing copy of the generated repository skill."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/everything-claude-code/agents/openai.yaml",
"path": ".agents/skills/ecc-conventions/agents/openai.yaml",
"description": "Codex skill metadata so the repo skill appears cleanly in the skill interface."
},
{
@@ -262,22 +254,22 @@
},
{
"moduleId": "runtime-core",
"path": ".claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml",
"path": ".claude/homunculus/instincts/inherited/ecc-instincts.yaml",
"description": "Continuous-learning instincts derived from repository patterns."
},
{
"moduleId": "agentshield-pack",
"path": ".claude/rules/everything-claude-code-guardrails.md",
"path": ".claude/rules/ecc-guardrails.md",
"description": "Repository guardrails distilled from analysis for security and workflow review."
},
{
"moduleId": "research-pack",
"path": ".claude/research/everything-claude-code-research-playbook.md",
"path": ".claude/research/ecc-research-playbook.md",
"description": "Research workflow playbook for source attribution and long-context tasks."
},
{
"moduleId": "team-config-sync",
"path": ".claude/team/everything-claude-code-team-config.json",
"path": ".claude/team/ecc-team-config.json",
"description": "Team config scaffold that points collaborators at the shared ECC bundle."
},
{
@@ -317,7 +309,7 @@
],
"adapters": {
"claudeCode": {
"skillPath": ".claude/skills/everything-claude-code/SKILL.md",
"skillPath": ".agents/skills/ecc-conventions/SKILL.md",
"identityPath": ".claude/identity.json",
"commandPaths": [
".claude/commands/database-migration.md",
@@ -328,7 +320,7 @@
"codex": {
"configPath": ".codex/config.toml",
"agentsGuidePath": ".codex/AGENTS.md",
"skillPath": ".agents/skills/everything-claude-code/SKILL.md"
"skillPath": ".agents/skills/ecc-conventions/SKILL.md"
}
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ This is a starter governance file for enterprise ECC deployments.
## Baseline
- Repository: https://github.com/affaan-m/everything-claude-code
- Repository: https://github.com/affaan-m/ECC
- Recommended profile: full
- Keep install manifests, audit allowlists, and Codex baselines under review.
@@ -1,16 +1,16 @@
# Curated instincts for affaan-m/everything-claude-code
# Import with: /instinct-import .claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml
# Curated instincts for affaan-m/ECC
# Import with: /instinct-import .claude/homunculus/instincts/inherited/ecc-instincts.yaml
---
id: everything-claude-code-conventional-commits
trigger: "when making a commit in everything-claude-code"
id: ecc-conventional-commits
trigger: "when making a commit in ECC"
confidence: 0.9
domain: git
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Conventional Commits
# ECC Conventional Commits
## Action
@@ -22,15 +22,15 @@ Use conventional commit prefixes such as `feat:`, `fix:`, `docs:`, `test:`, `cho
- Release and changelog automation expect readable commit categorization.
---
id: everything-claude-code-commit-length
trigger: "when writing a commit subject in everything-claude-code"
id: ecc-commit-length
trigger: "when writing a commit subject in ECC"
confidence: 0.8
domain: git
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Commit Length
# ECC Commit Length
## Action
@@ -42,15 +42,15 @@ Keep commit subjects concise and close to the repository norm of about 70 charac
- Short, descriptive subjects read well in release notes and PR summaries.
---
id: everything-claude-code-js-file-naming
trigger: "when creating a new JavaScript or TypeScript module in everything-claude-code"
id: ecc-js-file-naming
trigger: "when creating a new JavaScript or TypeScript module in ECC"
confidence: 0.85
domain: code-style
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code JS File Naming
# ECC JS File Naming
## Action
@@ -62,15 +62,15 @@ Prefer camelCase for JavaScript and TypeScript module filenames, and keep skill
- `skills/` and `commands/` directories use kebab-case consistently.
---
id: everything-claude-code-test-runner
trigger: "when adding or updating tests in everything-claude-code"
id: ecc-test-runner
trigger: "when adding or updating tests in ECC"
confidence: 0.9
domain: testing
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Test Runner
# ECC Test Runner
## Action
@@ -82,15 +82,15 @@ Use the repository's existing Node-based test flow: targeted `*.test.js` files f
- Test files follow the `*.test.js` naming pattern across hook, CI, and integration coverage.
---
id: everything-claude-code-hooks-change-set
trigger: "when modifying hooks or hook-adjacent behavior in everything-claude-code"
id: ecc-hooks-change-set
trigger: "when modifying hooks or hook-adjacent behavior in ECC"
confidence: 0.88
domain: workflow
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Hooks Change Set
# ECC Hooks Change Set
## Action
@@ -102,15 +102,15 @@ Update the hook script, its configuration, its tests, and its user-facing docume
- Partial hook changes are a common source of regressions and stale docs.
---
id: everything-claude-code-cross-platform-sync
id: ecc-cross-platform-sync
trigger: "when shipping a user-visible feature across ECC surfaces"
confidence: 0.9
domain: workflow
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Cross Platform Sync
# ECC Cross Platform Sync
## Action
@@ -122,15 +122,15 @@ Treat the root repo as the source of truth, then mirror shipped changes to `.cur
- The safest workflow is root-first followed by explicit parity updates.
---
id: everything-claude-code-release-sync
trigger: "when preparing a release for everything-claude-code"
id: ecc-release-sync
trigger: "when preparing a release for ECC"
confidence: 0.86
domain: workflow
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Release Sync
# ECC Release Sync
## Action
@@ -142,15 +142,15 @@ Keep package versions, plugin manifests, and release-facing docs synchronized be
- Version drift causes broken update paths and confusing install surfaces.
---
id: everything-claude-code-learning-curation
trigger: "when importing or evolving instincts for everything-claude-code"
id: ecc-learning-curation
trigger: "when importing or evolving instincts for ECC"
confidence: 0.84
domain: workflow
source: repo-curation
source_repo: affaan-m/everything-claude-code
source_repo: affaan-m/ECC
---
# Everything Claude Code Learning Curation
# ECC Learning Curation
## Action
@@ -1,4 +1,4 @@
# Everything Claude Code Research Playbook
# ECC Research Playbook
Use this when the task is documentation-heavy, source-sensitive, or requires broad repository context.
@@ -1,4 +1,4 @@
# Everything Claude Code Guardrails
# ECC Guardrails
## Prompt Defense Baseline
+1 -1
View File
@@ -1,4 +1,4 @@
# Node.js Rules for everything-claude-code
# Node.js Rules for ECC
## Prompt Defense Baseline
@@ -3,8 +3,7 @@
"generatedBy": "ecc-tools",
"profile": "full",
"sharedSkills": [
".claude/skills/everything-claude-code/SKILL.md",
".agents/skills/everything-claude-code/SKILL.md"
".agents/skills/ecc-conventions/SKILL.md"
],
"commandFiles": [
".claude/commands/database-migration.md",
@@ -114,7 +114,7 @@ const ROADMAP_SCHEMA = {
const GUARDRAILS = [
'CONSTRAINTS: research/triage only. Do NOT modify any code, do NOT open/close/merge PRs, do NOT post comments,',
'do NOT send any external message. Return findings as data only.',
'Brand it "ECC" (never "everything claude code"). AgentShield was FEATURED at a hackathon, never say it "won".',
'Brand it "ECC" only (never the retired expanded name). AgentShield was FEATURED at a hackathon, never say it "won".',
'AgentShield npm package is "ecc-agentshield". Local clone: ~/GitHub/ECC/agentshield. ECC repo: affaan-m/ECC. AgentShield repo: affaan-m/agentshield.',
'You have Bash (gh CLI), Read, Grep, Glob, and web tools (load via ToolSearch: WebSearch / firecrawl / exa).'
].join(' ');
@@ -129,7 +129,7 @@ const surveyThunks = [
),
() =>
agent(
`${GUARDRAILS}\n\nSURVEY the CURRENT state of ECC Pro / paid surface. Read in ~/GitHub/ECC/everything-claude-code: scripts/lib/control-pane/* (control pane, proximity, viz), scripts/lib/agent-proximity/*, docs/design/agent-proximity.md, README.md, any pricing/Pro/Enterprise mentions. Determine: what is free vs what is positioned as Pro/Enterprise today, what monetizable surfaces exist (control pane, 3D agent-airspace observability, shared knowledge, JIT team workflows, kanban), and where the paid value story is thin. area="ecc-pro-surface".`,
`${GUARDRAILS}\n\nSURVEY the CURRENT state of ECC Pro / paid surface. Read in ~/GitHub/ECC: scripts/lib/control-pane/* (control pane, proximity, viz), scripts/lib/agent-proximity/*, docs/design/agent-proximity.md, README.md, any pricing/Pro/Enterprise mentions. Determine: what is free vs what is positioned as Pro/Enterprise today, what monetizable surfaces exist (control pane, 3D agent-airspace observability, shared knowledge, JIT team workflows, kanban), and where the paid value story is thin. area="ecc-pro-surface".`,
{ label: 'survey:ecc-pro-surface', phase: 'Survey', agentType: 'general-purpose', schema: CAPABILITY_SCHEMA }
),
() =>
+2 -2
View File
@@ -1,6 +1,6 @@
# Everything Claude Code for CodeBuddy
# ECC for CodeBuddy
Bring Everything Claude Code (ECC) workflows to CodeBuddy IDE. This repository provides custom commands, agents, skills, and rules that can be installed into any CodeBuddy project using the unified Target Adapter architecture.
Bring ECC workflows to CodeBuddy IDE. This repository provides custom commands, agents, skills, and rules that can be installed into any CodeBuddy project using the unified Target Adapter architecture.
## Quick Start (Recommended)
+2 -2
View File
@@ -1,6 +1,6 @@
# Everything Claude Code for CodeBuddy
# ECC for CodeBuddy
为 CodeBuddy IDE 带来 Everything Claude Code (ECC) 工作流。此仓库提供自定义命令、智能体、技能和规则,可以通过统一的 Target Adapter 架构安装到任何 CodeBuddy 项目中。
为 CodeBuddy IDE 带来 ECC 工作流。此仓库提供自定义命令、智能体、技能和规则,可以通过统一的 Target Adapter 架构安装到任何 CodeBuddy 项目中。
## 快速开始(推荐)
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/**
* ECC CodeBuddy Installer (Cross-platform Node.js version)
* Installs Everything Claude Code workflows into a CodeBuddy project.
* Installs ECC workflows into a CodeBuddy project.
*
* Usage:
* node install.js # Install to current directory
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
#
# ECC CodeBuddy Installer
# Installs Everything Claude Code workflows into a CodeBuddy project.
# Installs ECC workflows into a CodeBuddy project.
#
# Usage:
# ./install.sh # Install to current directory
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/**
* ECC CodeBuddy Uninstaller (Cross-platform Node.js version)
* Uninstalls Everything Claude Code workflows from a CodeBuddy project.
* Uninstalls ECC workflows from a CodeBuddy project.
*
* Usage:
* node uninstall.js # Uninstall from current directory
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
#
# ECC CodeBuddy Uninstaller
# Uninstalls Everything Claude Code workflows from a CodeBuddy project.
# Uninstalls ECC workflows from a CodeBuddy project.
#
# Usage:
# ./uninstall.sh # Uninstall from current directory
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "ecc",
"version": "2.2.1",
"version": "2.2.3",
"description": "Harness-native ECC workflows for Codex: shared skills, production-ready MCP configs, and selective-install-aligned conventions for TDD, security scanning, code review, and autonomous development.",
"author": {
"name": "Affaan Mustafa",
+1 -1
View File
@@ -1,6 +1,6 @@
#:schema https://developers.openai.com/codex/config-schema.json
# Everything Claude Code (ECC) — Codex Reference Configuration
# ECC — Codex Reference Configuration
#
# Copy this file to ~/.codex/config.toml for global defaults, or keep it in
# the project root as .codex/config.toml for project-local settings.
+1 -1
View File
@@ -32,7 +32,7 @@ ASTRAFLOW_CN_API_KEY=
# --- Optional: Atlas Cloud (OpenAI-compatible, 59+ LLM models) ---------------
# Full-modal AI inference platform — LLM / image / video generation
# Docs: https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=everything-claude-code
# Docs: https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=ECC
ATLAS_API_KEY=
# ATLAS_BASE_URL=https://api.atlascloud.ai/v1
# ATLAS_MODEL=anthropic/claude-sonnet-4.6
+1 -1
View File
@@ -4,7 +4,7 @@ This file provides Gemini CLI with the baseline ECC workflow, review standards,
## Overview
Everything Claude Code (ECC) is a cross-harness coding system with 36 specialized agents, 142 skills, and 68 commands.
ECC is a cross-harness coding system with 68 specialized agents, 293 skills, and 94 commands.
Gemini support is currently focused on a strong project-local instruction layer via `.gemini/GEMINI.md`, plus the shared MCP catalog and package-manager setup assets shipped by the installer.
+1 -1
View File
@@ -1,6 +1,6 @@
# ECC for GitHub Copilot
Everything Claude Code (ECC) baseline rules for GitHub Copilot Chat in VS Code.
ECC baseline rules for GitHub Copilot Chat in VS Code.
These instructions are always active. Use the prompts in `.github/prompts/` for deeper workflows.
## Core Workflow
+45 -2
View File
@@ -20,7 +20,7 @@ jobs:
test:
name: Test (${{ matrix.os }}, Node ${{ matrix.node }}, ${{ matrix.pm }})
runs-on: ${{ matrix.os }}
timeout-minutes: 20
timeout-minutes: 30
strategy:
fail-fast: false
@@ -47,7 +47,7 @@ jobs:
# Package manager setup
- name: Setup pnpm
if: matrix.pm == 'pnpm' && matrix.node != '18.x'
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
with:
# Keep an explicit pnpm major because this repo's packageManager is Yarn.
version: 10
@@ -239,6 +239,44 @@ jobs:
run: node scripts/ci/validate-no-personal-paths.js
continue-on-error: false
pi-core:
name: Pi Core Profile
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '20.x'
# Rebuild runs frontmatter validation and the pi/core safety checks
# (no callable endpoints, no runtime downloads, no secrets, no absolute
# home paths, no symlinks, no duplicate skill names); the diff check
# proves the committed profile is up to date.
- name: Rebuild pi/core and verify it is up to date
run: |
node scripts/build-pi-core.js
git diff --exit-code pi/core
- name: Install Pi coding agent CLI
run: npm install --global --ignore-scripts --no-audit --no-fund @mariozechner/pi-coding-agent@0.73.1
# --extension only loads a package's pi.extensions entries; pi/core is a
# skills+prompts-only package, so the equivalent --skill/--prompt-template
# resource flags are used. The load-test script additionally asserts via
# RPC that every curated command actually loaded.
- name: Offline load test with the Pi CLI
run: |
PI_OFFLINE=1 pi --offline --mode rpc --no-session --no-context-files --no-extensions \
--skill pi/core/skills --prompt-template pi/core/commands </dev/null >/dev/null
node scripts/ci/pi-core-load-test.js
python-tests:
name: Python Lint, Type Check & Test
runs-on: ubuntu-latest
@@ -267,6 +305,11 @@ jobs:
- name: Run Python tests
run: python -m pytest tests/test_*.py -m "not integration"
- name: Test minimum supported OpenAI SDK
run: |
python -m pip install 'openai==2.34.0'
python -m pytest tests/test_provider_tools.py tests/test_atlas_provider.py tests/test_astraflow_provider.py tests/test_resolver.py
security:
name: Security Scan
runs-on: ubuntu-latest
+1 -1
View File
@@ -48,7 +48,7 @@ jobs:
name: Stale Issues/PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 # v10.4.0
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
with:
stale-issue-message: 'This issue is stale due to inactivity.'
stale-pr-message: 'This PR is stale due to inactivity.'
+56 -4
View File
@@ -5,6 +5,8 @@ on:
tags: ['v*']
permissions:
actions: read
checks: read
contents: read
jobs:
@@ -12,6 +14,8 @@ jobs:
name: Verify Release
runs-on: ubuntu-latest
outputs:
release_sha: ${{ steps.release_gate.outputs.release_sha }}
tag_object_sha: ${{ steps.release_gate.outputs.tag_object_sha }}
already_published: ${{ steps.npm_publish_state.outputs.already_published }}
dist_tag: ${{ steps.npm_publish_state.outputs.dist_tag }}
publish_tag: ${{ steps.npm_publish_state.outputs.publish_tag }}
@@ -43,6 +47,13 @@ jobs:
node-version: '20.x'
registry-url: 'https://registry.npmjs.org'
- name: Verify signed tag and exact-SHA CI gates
id: release_gate
env:
GITHUB_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ github.ref_name }}
run: RELEASE_SHA="$(git rev-parse HEAD)" node scripts/ci/verify-release-gates.js
- name: Install dependencies
run: npm ci --ignore-scripts
@@ -73,6 +84,22 @@ jobs:
exit 1
fi
- name: Verify VERSION matches tag
env:
TAG_NAME: ${{ github.ref_name }}
run: |
TAG_VERSION="${TAG_NAME#v}"
FILE_VERSION=$(tr -d '[:space:]' < VERSION)
if [ "$TAG_VERSION" != "$FILE_VERSION" ]; then
echo "::error::Tag version ($TAG_VERSION) does not match VERSION ($FILE_VERSION)"
exit 1
fi
# pi/core/package.json derives its version from VERSION, so a current
# profile also proves pi/core is in sync with the tag.
- name: Verify pi/core profile is current
run: node scripts/build-pi-core.js --check
- name: Verify release metadata stays in sync
run: node tests/plugin-manifest.test.js
@@ -194,6 +221,31 @@ jobs:
ECC_RELEASE_SHA256: ${{ needs.verify.outputs.package_sha256 }}
run: node -e "const crypto = require('crypto'); const fs = require('fs'); const file = process.env.ECC_RELEASE_PACKAGE; const expected = process.env.ECC_RELEASE_SHA256; if (!/^ecc-universal-[0-9A-Za-z.+-]+\.tgz$/.test(file || '')) throw new Error('Unexpected packed filename'); if (!/^[a-f0-9]{64}$/.test(expected || '')) throw new Error('Invalid packed SHA-256'); const archives = fs.readdirSync('.').filter(name => name.endsWith('.tgz')); if (archives.length !== 1 || archives[0] !== file) throw new Error('Expected exactly one downloaded archive'); const actual = crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'); if (actual !== expected) throw new Error('Downloaded publish artifact SHA-256 mismatch')"
- name: Bind gate source to triggering commit
env:
EVENT_SHA: ${{ github.sha }}
VERIFIED_RELEASE_SHA: ${{ needs.verify.outputs.release_sha }}
run: node -e "const actual = process.env.EVENT_SHA; const expected = process.env.VERIFIED_RELEASE_SHA; if (typeof actual !== 'string' || actual.length !== 40 || !/^[a-f0-9]{40}$/.test(actual) || expected !== actual) throw new Error('Verified release differs from triggering commit')"
- name: Checkout verified gate source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
path: release-gate-source
persist-credentials: false
sparse-checkout: scripts/ci/verify-release-gates.js
sparse-checkout-cone-mode: false
# This read-only API check uses the existing publish job token. It is a
# snapshot; preventing subsequent tag movement requires protected tags.
- name: Recheck verified tag before publish
env:
GITHUB_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ github.ref_name }}
RELEASE_SHA: ${{ needs.verify.outputs.release_sha }}
RELEASE_TAG_OBJECT_SHA: ${{ needs.verify.outputs.tag_object_sha }}
run: node release-gate-source/scripts/ci/verify-release-gates.js --tag-only
- name: Publish npm package
if: needs.verify.outputs.already_published != 'true'
env:
@@ -209,7 +261,7 @@ jobs:
PACKAGE_VERSION: ${{ needs.verify.outputs.package_version }}
run: |
REGISTRY_INTEGRITY=""
for ATTEMPT in 1 2 3 4 5 6; do
for ATTEMPT in $(seq 1 30); do
set +e
REGISTRY_INTEGRITY=$(npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" dist.integrity 2>&1)
NPM_STATUS=$?
@@ -217,12 +269,12 @@ jobs:
if [ "$NPM_STATUS" -eq 0 ]; then
break
fi
if [ "$ATTEMPT" -eq 6 ]; then
echo "::error::Published npm artifact was not readable after six attempts"
if [ "$ATTEMPT" -eq 30 ]; then
echo "::error::Published npm artifact was not readable after five minutes"
printf '%s\n' "$REGISTRY_INTEGRITY"
exit "$NPM_STATUS"
fi
sleep 5
sleep 10
done
ECC_REGISTRY_INTEGRITY="$REGISTRY_INTEGRITY" node -e "const crypto = require('crypto'); const fs = require('fs'); const expected = process.env.ECC_REGISTRY_INTEGRITY; if (!/^sha512-[A-Za-z0-9+/]+={0,2}$/.test(expected || '')) throw new Error('Invalid published registry integrity'); const actual = 'sha512-' + crypto.createHash('sha512').update(fs.readFileSync(process.env.ECC_RELEASE_PACKAGE)).digest('base64'); if (actual !== expected) throw new Error('Published npm artifact does not match tested candidate')"
+34 -4
View File
@@ -18,6 +18,8 @@ on:
type: string
permissions:
actions: read
checks: read
contents: read
jobs:
@@ -25,6 +27,8 @@ jobs:
name: Verify Release
runs-on: ubuntu-latest
outputs:
release_sha: ${{ steps.release_gate.outputs.release_sha }}
tag_object_sha: ${{ steps.release_gate.outputs.tag_object_sha }}
already_published: ${{ steps.npm_publish_state.outputs.already_published }}
dist_tag: ${{ steps.npm_publish_state.outputs.dist_tag }}
publish_tag: ${{ steps.npm_publish_state.outputs.publish_tag }}
@@ -57,6 +61,13 @@ jobs:
node-version: '20.x'
registry-url: 'https://registry.npmjs.org'
- name: Verify signed tag and exact-SHA CI gates
id: release_gate
env:
GITHUB_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ inputs.tag }}
run: RELEASE_SHA="$(git rev-parse HEAD)" node scripts/ci/verify-release-gates.js
- name: Install dependencies
run: npm ci --ignore-scripts
@@ -208,6 +219,25 @@ jobs:
ECC_RELEASE_SHA256: ${{ needs.verify.outputs.package_sha256 }}
run: node -e "const crypto = require('crypto'); const fs = require('fs'); const file = process.env.ECC_RELEASE_PACKAGE; const expected = process.env.ECC_RELEASE_SHA256; if (!/^ecc-universal-[0-9A-Za-z.+-]+\.tgz$/.test(file || '')) throw new Error('Unexpected packed filename'); if (!/^[a-f0-9]{64}$/.test(expected || '')) throw new Error('Invalid packed SHA-256'); const archives = fs.readdirSync('.').filter(name => name.endsWith('.tgz')); if (archives.length !== 1 || archives[0] !== file) throw new Error('Expected exactly one downloaded archive'); const actual = crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'); if (actual !== expected) throw new Error('Downloaded publish artifact SHA-256 mismatch')"
- name: Checkout verified gate source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ needs.verify.outputs.release_sha }}
path: release-gate-source
persist-credentials: false
sparse-checkout: scripts/ci/verify-release-gates.js
sparse-checkout-cone-mode: false
# This read-only API check uses the existing publish job token. It is a
# snapshot; preventing subsequent tag movement requires protected tags.
- name: Recheck verified tag before publish
env:
GITHUB_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ inputs.tag }}
RELEASE_SHA: ${{ needs.verify.outputs.release_sha }}
RELEASE_TAG_OBJECT_SHA: ${{ needs.verify.outputs.tag_object_sha }}
run: node release-gate-source/scripts/ci/verify-release-gates.js --tag-only
- name: Publish npm package
if: needs.verify.outputs.already_published != 'true'
env:
@@ -223,7 +253,7 @@ jobs:
PACKAGE_VERSION: ${{ needs.verify.outputs.package_version }}
run: |
REGISTRY_INTEGRITY=""
for ATTEMPT in 1 2 3 4 5 6; do
for ATTEMPT in $(seq 1 30); do
set +e
REGISTRY_INTEGRITY=$(npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" dist.integrity 2>&1)
NPM_STATUS=$?
@@ -231,12 +261,12 @@ jobs:
if [ "$NPM_STATUS" -eq 0 ]; then
break
fi
if [ "$ATTEMPT" -eq 6 ]; then
echo "::error::Published npm artifact was not readable after six attempts"
if [ "$ATTEMPT" -eq 30 ]; then
echo "::error::Published npm artifact was not readable after five minutes"
printf '%s\n' "$REGISTRY_INTEGRITY"
exit "$NPM_STATUS"
fi
sleep 5
sleep 10
done
ECC_REGISTRY_INTEGRITY="$REGISTRY_INTEGRITY" node -e "const crypto = require('crypto'); const fs = require('fs'); const expected = process.env.ECC_REGISTRY_INTEGRITY; if (!/^sha512-[A-Za-z0-9+/]+={0,2}$/.test(expected || '')) throw new Error('Invalid published registry integrity'); const actual = 'sha512-' + crypto.createHash('sha512').update(fs.readFileSync(process.env.ECC_RELEASE_PACKAGE)).digest('base64'); if (actual !== expected) throw new Error('Published npm artifact does not match tested candidate')"
+1 -1
View File
@@ -38,7 +38,7 @@ jobs:
- name: Setup pnpm
if: inputs.package-manager == 'pnpm' && inputs.node-version != '18.x'
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
with:
# Keep an explicit pnpm major because this repo's packageManager is Yarn.
version: 10
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
+1 -1
View File
@@ -1,6 +1,6 @@
# ECC for Hermes
This directory contains the ECC (Everything Claude Code) configuration for the Hermes harness.
This directory contains the ECC configuration for the Hermes harness.
## What is installed
+1 -1
View File
@@ -1,6 +1,6 @@
# ECC for Kimi Code CLI
This directory documents ECC (Everything Claude Code) support for its tested Kimi Code CLI compatibility target. The managed adapter is verified against Kimi Code 0.31.x (`@moonshot-ai/kimi-code`); newer provider releases are outside this adapter's verified range.
This directory documents ECC support for its tested Kimi Code CLI compatibility target. The managed adapter is verified against Kimi Code 0.31.x (`@moonshot-ai/kimi-code`); newer provider releases are outside this adapter's verified range.
## What Kimi Code discovers natively
+2 -2
View File
@@ -1,6 +1,6 @@
# Everything Claude Code for Kiro
# ECC for Kiro
Bring [Everything Claude Code](https://github.com/anthropics/courses/tree/master/everything-claude-code) (ECC) workflows to [Kiro](https://kiro.dev). This repository provides custom agents, skills, hooks, steering files, and scripts that can be installed into any Kiro project with a single command.
Bring [ECC](https://github.com/affaan-m/ECC) workflows to [Kiro](https://kiro.dev). This repository provides custom agents, skills, hooks, steering files, and scripts that can be installed into any Kiro project with a single command.
## Quick Start
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
#
# ECC Kiro Installer
# Installs Everything Claude Code workflows into a Kiro project.
# Installs ECC workflows into a Kiro project.
#
# Usage:
# ./install.sh # Install to current directory
+1 -1
View File
@@ -2,7 +2,7 @@
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
"args": ["-y", "chrome-devtools-mcp@1.10.1"]
}
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
# ECC for OpenClaw
This directory contains the ECC (Everything Claude Code) configuration for the OpenClaw harness.
This directory contains the ECC configuration for the OpenClaw harness.
## What is installed
+1 -1
View File
@@ -37,4 +37,4 @@
// Export the main plugin
// opencode's legacy plugin loader iterates every module export and throws if
// any is not a plugin function, so only the plugin function may be exported.
export { default } from "./plugins/index.js"
export { default } from "./plugins/index.ts"
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "ecc-universal",
"version": "2.2.1",
"version": "2.2.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ecc-universal",
"version": "2.2.1",
"version": "2.2.3",
"license": "MIT",
"devDependencies": {
"@opencode-ai/plugin": "^1.4.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "ecc-universal",
"version": "2.2.1",
"version": "2.2.3",
"description": "ECC plugin for OpenCode - agents, commands, hooks, and skills",
"main": "dist/index.js",
"types": "dist/index.d.ts",
+23 -12
View File
@@ -16,8 +16,8 @@
import type { PluginInput } from "@opencode-ai/plugin"
import * as fs from "fs"
import * as path from "path"
import changedFilesTool from "../tools/changed-files.js"
import dependencyAnalyzerTool from "../tools/dependency-analyzer.js"
import changedFilesTool from "../tools/changed-files.ts"
import dependencyAnalyzerTool from "../tools/dependency-analyzer.ts"
/**
* Type definitions for better type safety
@@ -111,9 +111,9 @@ export const ECCHooksPlugin: ECCHooksPluginFn = async ({
// This plugin is OpenCode's startup entry point, so a static import
// failure here previously crashed the whole plugin -- and with it, the
// entire OpenCode session -- before any hooks could load (see #2530).
let changedFilesStore: typeof import("./lib/changed-files-store.js") | undefined
let changedFilesStore: typeof import("./lib/changed-files-store.ts") | undefined
try {
const store = await import("./lib/changed-files-store.js")
const store = await import("./lib/changed-files-store.ts")
store.initStore(worktreePath)
changedFilesStore = store
} catch {
@@ -481,7 +481,7 @@ export const ECCHooksPlugin: ECCHooksPluginFn = async ({
* Triggers: Before shell command execution
* Action: Sets PROJECT_ROOT, PACKAGE_MANAGER, DETECTED_LANGUAGES, ECC_VERSION
*/
"shell.env": async () => {
"shell.env": async (_input: { cwd: string }, output: { env: Record<string, string> }) => {
const env: Record<string, string> = {
ECC_VERSION: getECCVersion(),
ECC_PLUGIN: "true",
@@ -523,7 +523,8 @@ export const ECCHooksPlugin: ECCHooksPluginFn = async ({
env.PRIMARY_LANGUAGE = detected[0]
}
return env
// OpenCode reads the supplied output object and ignores callback return values.
output.env = { ...output.env, ...env }
},
/**
@@ -531,13 +532,16 @@ export const ECCHooksPlugin: ECCHooksPluginFn = async ({
* OpenCode-specific: Control context compaction behavior
*
* Triggers: Before context compaction
* Action: Push ECC context block and custom compaction prompt
* Action: Push ECC context block and compaction guidance
*/
"experimental.session.compacting": async () => {
"experimental.session.compacting": async (
_input: { sessionID: string },
output: { context: string[]; prompt?: string }
) => {
const contextBlock = [
"# ECC Context (preserve across compaction)",
"",
"## Active Plugin: ECC v2.2.1",
"## Active Plugin: ECC v2.2.3",
"- Hooks: file.edited, tool.execute.before/after, session.created/idle/deleted, shell.env, compacting, permission.ask",
"- Tools: run-tests, check-coverage, security-audit, format-code, lint-check, git-summary, changed-files",
"- Agents: 13 specialized (planner, architect, tdd-guide, code-reviewer, security-reviewer, build-error-resolver, e2e-runner, refactor-cleaner, doc-updater, go-reviewer, go-build-resolver, database-reviewer, python-reviewer)",
@@ -558,9 +562,16 @@ export const ECCHooksPlugin: ECCHooksPluginFn = async ({
contextBlock.push("")
}
return {
context: contextBlock.join("\n"),
compaction_prompt: "Focus on preserving: 1) Current task status and progress, 2) Key decisions made, 3) Files created/modified, 4) Remaining work items, 5) Any security concerns flagged. Discard: verbose tool outputs, intermediate exploration, redundant file listings.",
const eccContext = [
contextBlock.join("\n"),
"Focus on preserving: 1) Current task status and progress, 2) Key decisions made, 3) Files created/modified, 4) Remaining work items, 5) Any security concerns flagged. Discard: verbose tool outputs, intermediate exploration, redundant file listings.",
]
// OpenCode requires output assignment and skips context when a prompt is set.
if (output.prompt !== undefined) {
output.prompt = [output.prompt, ...eccContext].join("\n\n")
} else {
output.context = [...output.context, ...eccContext]
}
},
+2 -2
View File
@@ -6,7 +6,7 @@
* while taking advantage of OpenCode's more sophisticated 20+ event types.
*/
export { ECCHooksPlugin, default } from "./ecc-hooks.js"
export { ECCHooksPlugin, default } from "./ecc-hooks.ts"
// Re-export for named imports
export * from "./ecc-hooks.js"
export * from "./ecc-hooks.ts"
+3 -3
View File
@@ -1,5 +1,5 @@
import { tool, type ToolDefinition } from "@opencode-ai/plugin/tool"
import type { ChangeType, TreeNode } from "../plugins/lib/changed-files-store.js"
import type { ChangeType, TreeNode } from "../plugins/lib/changed-files-store.ts"
const INDICATORS: Record<ChangeType, string> = {
added: "+",
@@ -27,12 +27,12 @@ function renderTree(nodes: TreeNode[], indent: string): string {
// file, so a static import failure here previously took down the entire
// tools module -- and with it, the whole OpenCode session -- on the very
// first tool-loading pass (see #2530).
type ChangedFilesStore = typeof import("../plugins/lib/changed-files-store.js")
type ChangedFilesStore = typeof import("../plugins/lib/changed-files-store.ts")
let changedFilesStorePromise: Promise<ChangedFilesStore> | undefined
async function loadChangedFilesStore(): Promise<ChangedFilesStore> {
if (!changedFilesStorePromise) {
changedFilesStorePromise = import("../plugins/lib/changed-files-store.js").catch(() => {
changedFilesStorePromise = import("../plugins/lib/changed-files-store.ts").catch(() => {
changedFilesStorePromise = undefined
throw new Error(
"changed-files tool: could not load the changed-files store. " +
+8 -8
View File
@@ -5,11 +5,11 @@
*/
// Re-export all tools
export { default as runTests } from "./run-tests.js"
export { default as checkCoverage } from "./check-coverage.js"
export { default as securityAudit } from "./security-audit.js"
export { default as formatCode } from "./format-code.js"
export { default as lintCheck } from "./lint-check.js"
export { default as gitSummary } from "./git-summary.js"
export { default as changedFiles } from "./changed-files.js"
export { default as dependencyAnalyzer } from "./dependency-analyzer.js"
export { default as runTests } from "./run-tests.ts"
export { default as checkCoverage } from "./check-coverage.ts"
export { default as securityAudit } from "./security-audit.ts"
export { default as formatCode } from "./format-code.ts"
export { default as lintCheck } from "./lint-check.ts"
export { default as gitSummary } from "./git-summary.ts"
export { default as changedFiles } from "./changed-files.ts"
export { default as dependencyAnalyzer } from "./dependency-analyzer.ts"
+2 -1
View File
@@ -15,7 +15,8 @@
"sourceMap": true,
"resolveJsonModule": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowImportingTsExtensions": true,
"rewriteRelativeImportExtensions": true,
"types": ["node"]
},
"include": [
+44 -3
View File
@@ -141,6 +141,10 @@ const DISABLED_VALUES = new Set(["0", "false", "off", "none", "disabled"])
/**
* Optional Pi companion packages. ECC works without every one of these; they
* are reported by `/ecc-doctor` so users can see which extras are available.
*
* These are capability names, not exact install specs. See
* `findInstalledCompanion` for how an entry is matched against what Pi has
* actually installed.
*/
const COMPANION_PACKAGES = [
"pi-subagents",
@@ -475,6 +479,41 @@ function normalizePiPackageName(entry: unknown): string | undefined {
return versionAt > 0 ? spec.slice(0, versionAt) : spec
}
/**
* The installed package satisfying a companion entry, or undefined if none is.
*
* An exact name match is the ordinary case. An UNSCOPED companion entry is
* also satisfied by a scoped package with the same bare name --
* `@tintinweb/pi-subagents` satisfies `pi-subagents`. The subagents capability
* is published to npm by more than one maintainer under that same bare name,
* and a user running a scoped fork has the capability installed by any
* meaning of the word; reporting "not installed" at them while its tools are
* live in their session is a false negative, and the suggested
* `pi install npm:pi-subagents` would push them into installing a second
* extension that registers the same tool names.
*
* A SCOPED companion entry is matched exactly, because there the scope is
* part of the identity the entry names, not incidental packaging.
*/
function findInstalledCompanion(companion: string, installed: Set<string>): string | undefined {
if (installed.has(companion)) {
return companion
}
if (companion.startsWith("@")) {
return undefined
}
const scopedSuffix = `/${companion}`
for (const name of installed) {
if (name.startsWith("@") && name.endsWith(scopedSuffix)) {
return name
}
}
return undefined
}
function countDirectories(dir: string): number {
try {
return fs.readdirSync(dir, { withFileTypes: true }).filter(entry => entry.isDirectory()).length
@@ -547,10 +586,12 @@ function buildDoctorReport(ctx: ExtensionContext): string {
const installed = listInstalledPiPackages(ctx.cwd)
for (const name of COMPANION_PACKAGES) {
const present = installed.has(name)
lines.push(` ${present ? "installed " : "not installed"} ${name}`)
if (!present) {
const match = findInstalledCompanion(name, installed)
lines.push(` ${match ? "installed " : "not installed"} ${name}`)
if (!match) {
lines.push(` install with: pi install npm:${name}`)
} else if (match !== name) {
lines.push(` satisfied by: ${match}`)
}
}
+49
View File
@@ -0,0 +1,49 @@
# Security Evidence — PR #3172 / #3171
Commit under review: observe.sh Layer-1 allowlist adds `sdk-cli`.
## Changed security-sensitive surface
- `skills/continuous-learning-v2/hooks/observe.sh` (agent hook entrypoint allowlist)
## Threat model (bounded)
- **Risk if missing `sdk-cli`**: interactive Agent SDK CLI sessions never observe (availability/coverage gap).
- **Risk if allowlist too broad**: non-interactive bots could start the observer. Mitigated by Layers 2–5 (`ECC_HOOK_PROFILE=minimal`, `ECC_SKIP_OBSERVE=1`, `agent_id`, path exclusions) — unchanged by this PR.
- **No secrets / auth tokens / billing / webhook handlers** were modified.
## Security-focused validation artifacts (this PR)
1. **Focused security regression test** (new): `tests/hooks/observe-entrypoint-security.test.js`
- Asserts source allowlist includes `sdk-cli`
- Asserts Layer-1 allows: `cli`, `sdk-ts`, `sdk-cli`, `claude-desktop`, `claude-vscode`
- Asserts Layer-1 rejects: `unknown-bot`, `ci-bot`
2. **Supply-chain IOC scan** (repo gate): `npm run security:ioc-scan`
## Command output (local)
### observe-entrypoint-security.test.js
```text
=== observe.sh Layer-1 entrypoint security (#3171) ===
✓ source allowlist includes sdk-cli
✓ Layer-1 allows cli
✓ Layer-1 allows sdk-ts
✓ Layer-1 allows sdk-cli
✓ Layer-1 allows claude-desktop
✓ Layer-1 allows claude-vscode
✓ Layer-1 rejects unknown-bot
✓ Layer-1 rejects ci-bot
All Layer-1 security checks passed.
```
### npm run security:ioc-scan
```text
> ecc-universal@2.2.1 security:ioc-scan
> node scripts/ci/scan-supply-chain-iocs.js
Supply-chain IOC scan passed for /workspace/pr-work/ECC-3171 (12 files inspected)
```
## Conclusion
Allowlist change is covered by a dedicated security regression test plus the repository IOC scan. Unknown entrypoints remain denied at Layer-1.
+2 -2
View File
@@ -1,6 +1,6 @@
# Everything Claude Code for Trae
# ECC for Trae
Bring Everything Claude Code (ECC) workflows to Trae IDE. This repository provides custom commands, agents, skills, and rules that can be installed into any Trae project with a single command.
Bring ECC workflows to Trae IDE. This repository provides custom commands, agents, skills, and rules that can be installed into any Trae project with a single command.
## Quick Start
+2 -2
View File
@@ -1,6 +1,6 @@
# Everything Claude Code for Trae
# ECC for Trae
为 Trae IDE 带来 Everything Claude Code (ECC) 工作流。此仓库提供自定义命令、智能体、技能和规则,可以通过单个命令安装到任何 Trae 项目中。
为 Trae IDE 带来 ECC 工作流。此仓库提供自定义命令、智能体、技能和规则,可以通过单个命令安装到任何 Trae 项目中。
## 快速开始
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
#
# ECC Trae Installer
# Installs Everything Claude Code workflows into a Trae project.
# Installs ECC workflows into a Trae project.
#
# Usage:
# ./install.sh # Install to current directory
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
#
# ECC Trae Uninstaller
# Uninstalls Everything Claude Code workflows from a Trae project.
# Uninstalls ECC workflows from a Trae project.
#
# Usage:
# ./uninstall.sh # Uninstall from current directory
+63 -16
View File
@@ -1,8 +1,8 @@
# Everything Claude Code (ECC) — Agent Instructions
# ECC — Agent Instructions
This is a **production-ready AI coding plugin** providing 68 specialized agents, 292 skills, 94 commands, and automated hook workflows for software development.
This is a **production-ready AI coding plugin** providing 68 specialized agents, 293 skills, 94 commands, and automated hook workflows for software development.
**Version:** 2.2.1
**Version:** 2.2.3
## Core Principles
@@ -48,19 +48,66 @@ This is a **production-ready AI coding plugin** providing 68 specialized agents,
| mle-reviewer | Production ML pipeline review | ML pipelines, evals, serving, monitoring, rollback |
| rag-pipeline-reviewer | RAG pipeline review | Retrieval quality, chunking, reranking, RAGAS evaluation coverage |
| typescript-reviewer | TypeScript/JavaScript code review | TypeScript/JavaScript projects |
| react-reviewer | React/JSX code review | React component and hook changes |
| react-build-resolver | React/Vite/Next.js/webpack build errors | React build failures |
| vue-reviewer | Vue.js Composition API and reactivity review | Vue component, Pinia, and Nuxt changes |
| swift-reviewer | Swift/iOS code review | Swift code changes |
| swift-build-resolver | Swift/Xcode/SPM build errors | Swift build failures |
| flutter-reviewer | Flutter/Dart widget and state review | Flutter app changes |
| dart-build-resolver | Dart/Flutter build and pub dependency errors | Flutter compilation failures |
| csharp-reviewer | C#/.NET async patterns, nullability, security | All C# code changes |
| fastapi-reviewer | FastAPI async correctness, Pydantic, OpenAPI | FastAPI endpoint and schema changes |
| php-reviewer | PHP/PSR-12, Eloquent, security review | PHP code changes |
| harmonyos-app-resolver | HarmonyOS ArkTS/ArkUI code and API review | HarmonyOS/OpenHarmony application changes |
| healthcare-reviewer | Clinical safety, PHI compliance, CDSS accuracy | Healthcare, EMR/EHR application code |
| a11y-architect | WCAG 2.2 accessibility architecture | Designing UI components, accessibility audits |
| code-architect | Feature architecture blueprints from codebase patterns | New features needing implementation design |
| network-architect | Enterprise multi-site network architecture | Complex network design decisions |
| homelab-architect | Home/small-lab network design | Home infrastructure planning |
| network-config-reviewer | Router/switch config security and correctness | Network configuration changes |
| network-troubleshooter | OSI-layer connectivity and routing diagnosis | Network connectivity and routing issues |
| performance-optimizer | Bottleneck detection, bundle size, memory leaks | Slow code or high resource usage |
| silent-failure-hunter | Swallowed errors and missing propagation | Code reliability audits |
| type-design-analyzer | Type encapsulation and invariant design | Type design and invariant reviews |
| pr-test-analyzer | PR test coverage quality and completeness | Before merging pull requests |
| code-explorer | Execution path tracing and architecture mapping | Understanding unfamiliar code paths |
| code-simplifier | Clarity-focused code refinement without behavior change | Post-implementation cleanup |
| comment-analyzer | Comment accuracy, freshness, and rot risk | Code comment audits |
| agent-evaluator | 5-axis quality scoring for agent output | Evaluating task completion quality |
| chief-of-staff | Multi-channel communication triage and drafting | Managing email/Slack communication workflows |
| conversation-analyzer | Extract hook behaviors from session transcripts | Creating hooks from observed patterns |
| marketing-agent | Campaign planning, copy creation, content calendars | Product launches, marketing campaigns |
| seo-specialist | Technical SEO audit, structured data, Core Web Vitals | Site audits, meta tag and schema issues |
| opensource-forker | Fork projects and strip secrets for open-sourcing | Starting an open-source release |
| opensource-sanitizer | Verify sanitized fork is release-ready | Before any public release |
| opensource-packager | Generate OSS packaging boilerplate (README, LICENSE, etc.) | Finalizing an open-source release |
| gan-planner | Expand a prompt into a full product specification | Starting a GAN harness session |
| gan-generator | Implement features per spec, iterate on evaluator feedback | GAN harness implementation phase |
| gan-evaluator | Test running application via Playwright and score it | GAN harness evaluation phase |
## Agent Orchestration
Use agents proactively without user prompt:
- Complex feature requests → **planner**
- Code just written/modified → **code-reviewer**
- Bug fix or new feature → **tdd-guide**
- Architectural decision → **architect**
- Security-sensitive code → **security-reviewer**
- Brownfield project onboarding → **spec-miner**
- Autonomous loops / loop monitoring → **loop-operator**
- Harness config reliability and cost → **harness-optimizer**
- RAG/retrieval pipeline changes → **rag-pipeline-reviewer**
- Complex feature requests → **ecc:planner**
- Code just written/modified → **ecc:code-reviewer**
- Bug fix or new feature → **ecc:tdd-guide**
- Architectural decision → **ecc:architect**
- Security-sensitive code → **ecc:security-reviewer**
- Brownfield project onboarding → **ecc:spec-miner**
- Autonomous loops / loop monitoring → **ecc:loop-operator**
- Harness config reliability and cost → **ecc:harness-optimizer**
- RAG/retrieval pipeline changes → **ecc:rag-pipeline-reviewer**
- Performance bottleneck or slow code → **ecc:performance-optimizer**
- React/JSX changes → **ecc:react-reviewer**
- Vue changes → **ecc:vue-reviewer**
- Swift changes → **ecc:swift-reviewer**
- C# changes → **ecc:csharp-reviewer**
- PHP changes → **ecc:php-reviewer**
- Flutter/Dart changes → **ecc:flutter-reviewer**
- Healthcare/clinical code → **ecc:healthcare-reviewer**
- UI component design → **ecc:a11y-architect**
- Open-source release prep → **ecc:opensource-forker** → **ecc:opensource-sanitizer** → **ecc:opensource-packager**
- Agent output quality check → **ecc:agent-evaluator**
Use parallel execution for independent operations — launch multiple agents simultaneously.
@@ -114,9 +161,9 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat
## Development Workflow
1. **Plan** — Use planner agent, identify dependencies and risks, break into phases
2. **TDD** — Use tdd-guide agent, write tests first, implement, refactor
3. **Review** — Use code-reviewer agent immediately, address CRITICAL/HIGH issues
1. **Plan** — Use ecc:planner agent, identify dependencies and risks, break into phases
2. **TDD** — Use ecc:tdd-guide agent, write tests first, implement, refactor
3. **Review** — Use ecc:code-reviewer agent immediately, address CRITICAL/HIGH issues
4. **Capture knowledge in the right place**
- Personal debugging notes, preferences, and temporary context → auto memory
- Team/project knowledge (architecture decisions, API changes, runbooks) → the project's existing docs structure
@@ -154,7 +201,7 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat
```
agents/ — 68 specialized subagents
skills/ — 292 workflow skills and domain knowledge
skills/ — 293 workflow skills and domain knowledge
commands/ — 94 slash commands
hooks/ — Trigger-based automations
rules/ — Always-follow guidelines (common + per-language)
+52 -2
View File
@@ -1,10 +1,60 @@
# Changelog
## Unreleased
## 2.2.3 - 2026-10-01
### Changed
#### Naming
- `pi/core` refers to the project as ECC only. The generated README and the bundled `blueprint` skill no longer expand the name; profile contents, package name (`ecc-pi-core`) and paths are unchanged.
### Fixed
- Claude settings updates now tolerate a missing Windows device ID while retaining full-precision inode checks and strict matching when both device IDs are available.
#### Release workflow
- Poll the npm registry for up to five minutes after `npm publish` before verifying the published artifact, so a slow registry no longer fails the run before `latest` is promoted and the GitHub Release is created.
## 2.2.2 - 2026-09-15
### Added
#### Pi core profile
- Add `pi/core/`, a curated Pi-native skills+prompts-only profile for downstream packagers that mirror GitHub Releases: 123 portable engineering skills and 24 pure prompt-workflow commands, no extensions, no hooks, no runtime downloads, and no network or SaaS dependencies. The profile is generated deterministically from the explicit include/exclude lists in `manifests/pi-core.json` by `scripts/build-pi-core.js` and committed so release tarballs contain it verbatim; `pi/core/CURATION.md` lists every excluded skill and command with its reason.
- The build fails on safety violations: non-allowlisted URL hosts, pipe-to-shell or fetch-and-run download forms, secrets or tokens, absolute per-user home paths, symlinks, invalid SKILL.md frontmatter, and duplicate skill names. The `council` skill ships as `ecc-council` inside pi/core to avoid catalog name clashes.
- CI rebuilds pi/core and verifies it is committed up to date, then installs the Pi coding agent CLI and proves the profile loads fully offline (`PI_OFFLINE=1`), asserting every curated command is actually registered. The release workflow verifies VERSION matches the tag and that pi/core is current.
### Fixed
#### Packaging
- Explicitly include the compiled OpenCode payload in the npm package and verify that packing builds it from a clean state with lifecycle scripts enabled.
#### Memory and MCP
- Distinguish incomplete memory reads from missing records and classify directory traversal failures (`90ef62cb`, `8321021c`).
- Accept the reserved `_meta` parameter on memory MCP ping requests (`380f4b35`).
#### Hooks and Windows compatibility
- Keep `hooks.json` within Claude Code's schema by moving stable hook metadata into a validated sidecar (`1ac07903`).
- Handle stuck optional values and long-option prefixes in the no-verify guard (`4f373874`).
- Support Windows linter paths and ESLint 9 (`2083c983`).
- Tolerate missing Windows device IDs in settings updates while retaining full-precision inode checks and strict matching when both device IDs are available (`d3af582b`).
#### Workflow guidance and catalog
- Filter epic sync issues by label (`3033436d`).
- Remove instructions to auto-merge dependency bumps and synchronize localized merge authority (`22d7ed51`, `678c6dea`).
- Keep common naming and Boolean guidance language-neutral (`072e4684`, `a0ecb793`, `013ed0a8`).
- Distinguish the `prp-pr` command alias (`cc91c24f`).
- Correct Rails skill discovery, invoice tax calculation order, and framework documentation (`b6ddd13a`).
- Remove Serply and Squish catalog entries (`c4904e3f`).
#### Dependency security
- Update `lru` to 0.18.2 for RUSTSEC-2026-0253 (`4fc950c4`).
- Update `js-yaml` to 4.3.2 for GHSA-2883-xcg3-v3hh (`549c1469`).
## 2.2.0 - 2026-08-25
+23 -1
View File
@@ -1,4 +1,4 @@
# Contributing to Everything Claude Code
# Contributing to ECC
Thanks for wanting to contribute! This repo is a community resource for Claude Code users.
@@ -14,6 +14,7 @@ Thanks for wanting to contribute! This repo is a community resource for Claude C
- [MCP and documentation (e.g. Context7)](#mcp-and-documentation-eg-context7)
- [Cross-Harness and Translations](#cross-harness-and-translations)
- [Pull Request Process](#pull-request-process)
- [Releases](#releases)
---
@@ -484,6 +485,27 @@ Run `npm test` locally. It is the same gauntlet CI runs, and it catches almost e
---
## Releases
Releases are cut on a regular cadence, roughly every two weeks, plus out-of-band
patches for security or data-loss fixes.
1. Sync the version everywhere: `VERSION`, `package.json`, and (via
`node scripts/build-pi-core.js`) `pi/core/package.json`.
2. Update `CHANGELOG.md` and write reviewed release notes at
`docs/releases/<version>/release-notes.md` (required by the release workflow).
3. Tag `vX.Y.Z` on `main` and push the tag. The `release.yml` workflow verifies
the tag is exactly on `origin/main`, checks the VERSION/pi/core sync, tests
the exact packed artifact on Linux, macOS, and Windows, publishes to npm with
provenance, verifies registry bytes, and creates the GitHub Release from the
reviewed notes.
Tags and GitHub Releases are immutable once published: downstream packagers poll
`/releases`, download `archive/refs/tags/vX.Y.Z.tar.gz`, and pin its sha256.
Never move or re-tag a published version; ship a new patch version instead.
---
## Guidelines
### Do
+75 -39
View File
@@ -31,7 +31,8 @@
<a href="docs/th/README.md">ไทย</a> |
<a href="docs/de-DE/README.md">Deutsch</a> |
<a href="docs/es/README.md">Español</a> |
<a href="docs/uk-UA/README.md">Українська</a>
<a href="docs/uk-UA/README.md">Українська</a> |
<a href="docs/pl/README.md">Polski</a>
</p>
<p align="center">
@@ -42,8 +43,8 @@
</p>
<p align="center">
<a href="https://github.com/affaan-m/ECC/stargazers"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Fstars&style=flat" alt="Stars" /></a>
<a href="https://github.com/affaan-m/ECC/network/members"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Fforks&style=flat" alt="Forks" /></a>
<a href="https://github.com/affaan-m/ECC"><img src="https://img.shields.io/github/stars/affaan-m/ECC?style=flat" alt="GitHub stars" /></a>
<a href="https://github.com/affaan-m/ECC/forks"><img src="https://img.shields.io/github/forks/affaan-m/ECC?style=flat" alt="GitHub forks" /></a>
<a href="https://github.com/affaan-m/ECC/graphs/contributors"><img src="https://img.shields.io/github/contributors/affaan-m/ECC?style=flat" alt="Contributors" /></a>
<a href="https://github.com/marketplace/ecc-tools"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Finstalls&logo=github" alt="GitHub App installs" /></a>
</p>
@@ -109,12 +110,14 @@ Use the [guided setup](#install-ecc) or [native plugin commands](#claude-code-de
<p align="center" aria-label="Partners and sponsors">
<a href="https://www.coderabbit.ai" title="CodeRabbit"><img src="assets/images/sponsors/coderabbit.png" height="54" alt="CodeRabbit" /></a>&nbsp;&nbsp;&nbsp;
<a href="https://www.greptile.com/go/ecc" title="Greptile"><img src="assets/images/sponsors/greptile.png" height="54" alt="Greptile" /></a>&nbsp;&nbsp;&nbsp;
<a href="https://www.atlascloud.ai/?utm_source=github&amp;utm_medium=link&amp;utm_campaign=ECC" title="Atlas Cloud"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/images/sponsors/atlascloud-dark.svg" /><img src="assets/images/sponsors/atlascloud.svg" width="154" alt="Atlas Cloud" /></picture></a>&nbsp;&nbsp;&nbsp;
<a href="https://platform.kimi.ai?aff=ecc" title="Moonshot AI - Kimi"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/images/sponsors/moonshot-dark.png" /><img src="assets/images/sponsors/moonshot.png" width="132" alt="Moonshot AI - Kimi" /></picture></a>&nbsp;&nbsp;&nbsp;
<a href="https://compute.itomarkets.com" title="Itô Markets"><picture><source media="(prefers-color-scheme: light)" srcset="assets/images/sponsors/ito-transparent-light.png" /><img src="assets/images/sponsors/ito-transparent.png" width="96" alt="Itô Markets" /></picture></a>
<a href="https://compute.itomarkets.com" title="Itô Markets"><picture><source media="(prefers-color-scheme: light)" srcset="assets/images/sponsors/ito-transparent-light.png" /><img src="assets/images/sponsors/ito-transparent.png" width="96" alt="Itô Markets" /></picture></a>&nbsp;&nbsp;&nbsp;
<a href="https://serpapi.com/github-ecc" title="SerpApi: Web Search API"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/images/sponsors/serpapi-logo-dark-mode.svg" /><img src="assets/images/sponsors/serpapi-logo-light-mode.svg" width="200" alt="SerpApi: Web Search API" /></picture></a>
</p>
<sub><strong>Community sponsors:</strong> <a href="https://github.com/mikejmorgan-ai">Mike Morgan</a> · <a href="https://github.com/jasonwu513">@jasonwu513</a> · <a href="https://github.com/1anter">@1anter</a> · <a href="https://github.com/massimotodaro">@massimotodaro</a> · <a href="https://github.com/meadmccabe">@meadmccabe</a></sub>
<sub><strong>Past sponsors:</strong> <a href="https://www.atlascloud.ai/?utm_source=github&amp;utm_medium=link&amp;utm_campaign=ECC">Atlas Cloud</a> · <a href="https://github.com/mikejmorgan-ai">Mike Morgan (inactive)</a></sub>
<sub><strong>Community sponsors:</strong> <a href="https://github.com/jasonwu513">@jasonwu513</a> · <a href="https://github.com/1anter">@1anter</a> · <a href="https://github.com/massimotodaro">@massimotodaro</a> · <a href="https://github.com/meadmccabe">@meadmccabe</a></sub>
<sub><a href="https://github.com/sponsors/affaan-m"><strong>Become a Sponsor</strong></a> · <a href="SPONSORS.md">Sponsor Tiers</a> · <a href="SPONSORING.md">Sponsorship Program</a></sub>
@@ -136,12 +139,12 @@ Instead of rebuilding that process in every prompt, you install it once and make
ECC is MIT-licensed open source. It works best with Claude Code today, has a supported Codex sync path, and provides capability-limited adapters for Cursor, OpenCode, Gemini, Zed, GitHub Copilot, Antigravity, Qwen, and other harnesses. See the [support status matrix](#platform-support) before assuming feature parity.
Access to 68 agents, 292 skills, and 94 legacy command shims, plus hooks, rules, memory, continuous learning, and AgentShield security scanning. The agents are specialized for planning, review, build repair, security, architecture, and domain work.
Access to 68 agents, 293 skills, and 94 legacy command shims, plus hooks, rules, memory, continuous learning, and AgentShield security scanning. The agents are specialized for planning, review, build repair, security, architecture, and domain work.
| Included | Count | What it gives you |
| ---------------- | ----------: | ------------------------------------------------------------------------------------ |
| Agents | 68 agents | Planning, review, build repair, security, architecture, and domain work |
| Skills | 292 skills | TDD, research, security, docs, frontend, data, ML, operations, and more |
| Skills | 293 skills | TDD, research, security, docs, frontend, data, ML, operations, and more |
| Commands | 94 commands | Convenient entry points while ECC moves to a skills-first surface |
| Hooks and memory | Runtime | Enforcement, session summaries, continuous learning, instincts, and context controls |
| Rules | Selective | Always-loaded standards you choose by language or project |
@@ -150,8 +153,8 @@ Access to 68 agents, 292 skills, and 94 legacy command shims, plus hooks, rules,
<p align="center">
<a href="https://www.star-history.com/affaan-m/ecc">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/star-history-dark.svg" />
<img src="assets/star-history-light.svg" alt="ECC star history: first 40,000 stars, January 18 to February 7, 2026" width="100%" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=affaan-m/ECC&type=Date&theme=dark" />
<img src="https://api.star-history.com/svg?repos=affaan-m/ECC&type=Date" alt="Live star history chart for affaan-m/ECC" width="100%" />
</picture>
</a>
</p>
@@ -168,9 +171,34 @@ Access to 68 agents, 292 skills, and 94 legacy command shims, plus hooks, rules,
For Claude Code plugin setup, updates, scope changes, and hook-profile changes:
```bash
npx ecc-universal@2.2.1 setup
npx ecc-universal@2.2.3 setup
```
#### Windows first-time walkthrough
If you are new to command-line tools, use this copy-and-paste path:
1. Install Node.js 18 or newer, Git, and Claude Code.
2. Open **PowerShell** from the Windows Start menu.
3. Confirm that each prerequisite is available:
```powershell
node --version
git --version
claude --version
```
4. Run the guided installer:
```powershell
npx ecc-universal@2.2.3 setup
```
5. For a typical personal setup, choose **Global user**, choose **Standard** hooks, and confirm.
6. Start a new Claude Code session and run `/plugin list` to verify that `ecc@ecc` is enabled.
This path does not require cloning the repository. If any prerequisite command is not found, install or repair that prerequisite before rerunning ECC setup.
If npm reports a version or cache error, confirm the registry version before retrying:
```bash
@@ -181,12 +209,12 @@ ECC 2.2 supports the same guided setup through modern package runners:
| Package runner | Guided setup command |
|---|---|
| npm / npx | `npx ecc-universal@2.2.1 setup` |
| pnpm | `pnpm dlx ecc-universal@2.2.1 setup` |
| Yarn 2+ | `yarn dlx ecc-universal@2.2.1 setup` |
| Bun | `bunx ecc-universal@2.2.1 setup` |
| npm / npx | `npx ecc-universal@2.2.3 setup` |
| pnpm | `pnpm dlx ecc-universal@2.2.3 setup` |
| Yarn 2+ | `yarn dlx ecc-universal@2.2.3 setup` |
| Bun | `bunx ecc-universal@2.2.3 setup` |
The examples select [the published ECC 2.2.1 release](https://www.npmjs.com/package/ecc-universal/v/2.2.1), matching this repository's release version. A version pin is not a security audit or an integrity check. Review the release source and registry integrity before running package code; use a reviewed checkout for unreleased changes.
The examples select [the published ECC 2.2.3 release](https://www.npmjs.com/package/ecc-universal/v/2.2.3), matching this repository's release version. A version pin is not a security audit or an integrity check. Review the release source and registry integrity before running package code; use a reviewed checkout for unreleased changes.
Yarn Classic 1 does not provide `yarn dlx`; use `npx`, install the package globally, or upgrade Yarn for a temporary one-shot run.
@@ -195,7 +223,7 @@ The wizard inventories the official marketplace and every native Claude install
To configure more than one coding agent in one reviewed flow, use the multi-harness wizard:
```bash
npx ecc-universal@2.2.1 install --guided
npx ecc-universal@2.2.3 install --guided
```
It lets you select any combination of Claude Code, Codex, and Kimi Code, shows each install channel and destination, preflights every selection before the first write, and asks for one final confirmation.
@@ -209,7 +237,7 @@ It lets you select any combination of Claude Code, Codex, and Kimi Code, shows e
For automation, make every provider-specific choice explicit:
```bash
npx ecc-universal@2.2.1 install --guided \
npx ecc-universal@2.2.3 install --guided \
--harness claude --harness codex --harness kimi \
--claude-scope local --claude-hooks standard \
--profile core --yes
@@ -218,16 +246,16 @@ npx ecc-universal@2.2.1 install --guided \
Verify the native guided Codex path and managed Kimi path without writing first:
```bash
npx ecc-universal@2.2.1 install --guided --harness codex --dry-run
npx ecc-universal@2.2.1 install --profile core --target kimi --dry-run
npx ecc-universal@2.2.3 install --guided --harness codex --dry-run
npx ecc-universal@2.2.3 install --profile core --target kimi --dry-run
```
Additional package-name commands are also available through the 2.2 alias:
```bash
npx ecc-universal@2.2.1 consult "security reviews" --target claude
npx ecc-universal@2.2.1 install --profile minimal --target claude --with capability:machine-learning
npx ecc-universal@2.2.1 doctor --target kimi
npx ecc-universal@2.2.3 consult "security reviews" --target claude
npx ecc-universal@2.2.3 install --profile minimal --target claude --with capability:machine-learning
npx ecc-universal@2.2.3 doctor --target kimi
```
Do not use `npx ecc-install --profile minimal --target claude`: `ecc-install` is a binary name inside `ecc-universal`, not a separately published npm package.
@@ -376,7 +404,7 @@ cd ECC
| Qwen CLI | `./install.sh --profile minimal --target qwen` | See the [Qwen guide](docs/QWEN-GUIDE.md) |
| Hermes | `./install.sh --profile minimal --target hermes` | See the [Hermes setup guide](docs/HERMES-SETUP.md) |
| OpenClaw | `./install.sh --profile minimal --target openclaw` | Managed home-directory install |
| Kimi Code CLI | `./install.sh --profile minimal --target kimi` | Project-local `.kimi-code/` install · [Get Kimi Code](https://www.kimi.com/code?aff=ecc) |
| Kimi Code CLI | `./install.sh --profile minimal --target kimi` | Project-local `.kimi-code/` install · [Get Kimi Code](https://www.kimi.ai/code?aff=ecc) |
| CodeBuddy | `./install.sh --profile minimal --target codebuddy` | Project-local `.codebuddy/` install |
| JoyCode | `./install.sh --profile minimal --target joycode` | Project-local `.joycode/` install |
@@ -399,7 +427,7 @@ Deep per-harness notes (feature parity, hook adapters, limitations) live in [Pla
Use this when you want ECC's rules, agents, commands, platform config, and core workflows without runtime hooks:
```bash
npx ecc-universal@2.2.1 install --profile minimal --target claude
npx ecc-universal@2.2.3 install --profile minimal --target claude
```
From a source checkout, the equivalent command is:
@@ -461,6 +489,7 @@ Manual component-by-component copying also works. Each component is fully indepe
```bash
# Just agents
mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/
# Rules directories (common + language-specific)
@@ -505,7 +534,7 @@ Use this only when you are intentionally skipping the plugin path:
```bash
git clone https://github.com/affaan-m/ECC.git
cd ECC
./install.sh --profile full
./install.sh --profile full --enable-hooks
```
Windows:
@@ -513,9 +542,11 @@ Windows:
```powershell
git clone https://github.com/affaan-m/ECC.git
cd ECC
.\install.ps1 --profile full
.\install.ps1 --profile full --enable-hooks
```
These examples enable the automatic hook runtime. To install without hooks, replace `--enable-hooks` with `--no-hooks`.
If you choose this path, stop there. Do not also run `/plugin install`.
For hand-picked manual installs, Claude discovers skills as direct children of `~/.claude/skills/`; do not nest them under `~/.claude/skills/ecc/`.
@@ -584,11 +615,11 @@ If you installed from the universal package, run these commands from the same
project directory used for installation:
```bash
npx ecc-universal@2.2.1 list-installed
npx ecc-universal@2.2.1 doctor
npx ecc-universal@2.2.1 repair
npx ecc-universal@2.2.1 uninstall --dry-run
npx ecc-universal@2.2.1 uninstall
npx ecc-universal@2.2.3 list-installed
npx ecc-universal@2.2.3 doctor
npx ecc-universal@2.2.3 repair
npx ecc-universal@2.2.3 uninstall --dry-run
npx ecc-universal@2.2.3 uninstall
```
From a source checkout, inspect the managed state before reinstalling:
@@ -777,7 +808,7 @@ The `ito-compute-cli` package is currently unpublished. Build it locally from th
## What's New
Current release: **2.2.1** (2026-08-31). Highlights of the 2.2 line:
Current release: **2.2.3** (2026-10-01). Highlights of the 2.2 line:
- Guided, manifest-driven setup across Claude Code, Codex, and Kimi Code, with install-state ownership, doctor, repair, and uninstall.
- Native Antigravity install, a thin Pi adapter, and the packed-artifact release gate tested on Linux, macOS, and Windows.
@@ -794,7 +825,7 @@ Stable graduation of the 2.0 line: control-pane substrate, worktree lifecycle se
```text
ECC/
|-- agents/ # 68 specialized subagents for delegation
|-- skills/ # 292 reusable workflows loaded on demand
|-- skills/ # 293 reusable workflows loaded on demand
|-- commands/ # 94 maintained slash-command shims
|-- rules/ # opt-in common and language standards
|-- hooks/ # runtime automation and enforcement
@@ -1194,7 +1225,7 @@ ECC's Memory Vault gives Claude, Codex, Hermes, OpenClaw, Kimi, and other harnes
Skill-only, minimal, manual, and Claude plugin installs do not put the Memory Vault runtime on `PATH`. Install the npm runtime separately before using the CLI or optional MCP server:
```bash
npm install -g ecc-universal@2.2.1
npm install -g ecc-universal@2.2.3
ecc memory init --scope project
ecc memory search "authentication migration" --target-harness codex
ecc memory doctor
@@ -1488,9 +1519,14 @@ npm install && bash scripts/sync-ecc-to-codex.sh
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.
Normal MCP sync preserves existing server settings and warns when they differ from ECC's recommendation. An existing `chrome-devtools-mcp@latest` entry therefore stays unchanged; updating the repository alone does not adopt the recommended `chrome-devtools-mcp@1.10.1` pin. Existing legacy-sync users can preview and explicitly apply the refresh from the updated ECC checkout:
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.
```bash
bash scripts/sync-ecc-to-codex.sh --dry-run --update-mcp
bash scripts/sync-ecc-to-codex.sh --update-mcp
```
Review the preview before applying: `--update-mcp` replaces the entire recommended `chrome-devtools` server section, including custom command arguments and nested settings. Unrelated user-managed servers remain in place. Retired defaults such as Context7 are not refreshed or migrated by this flag.
Codex macOS app:
- Open this repository as your workspace.
@@ -1506,7 +1542,7 @@ Codex macOS app:
| Config | 1 | `.codex/config.toml`: top-level approvals/sandbox/web_search, MCP servers, notifications, profiles |
| AGENTS.md | 2 | Root (universal) + `.codex/AGENTS.md` (Codex-specific supplement) |
| Skills | 32 | `.agents/skills/`: SKILL.md + agents/openai.yaml per skill |
| MCP Servers | 6 | GitHub, Context7, Exa, Memory, Playwright, Sequential Thinking (7 with Supabase via `--update-mcp` sync) |
| MCP Servers | 6 legacy reference entries | GitHub, Context7, Exa, Memory, Playwright, Sequential Thinking. Current managed sync recommends `chrome-devtools`; see the explicit refresh instructions above. |
| Profiles | 2 | `strict` (read-only sandbox) and `yolo` (full auto-approve) |
| Agent Roles | 3 | `.codex/agents/`: explorer, reviewer, docs-researcher |
@@ -1589,7 +1625,7 @@ opencode
**Option 2: Install as npm package**
```bash
npm install ecc-universal@2.2.1
npm install ecc-universal@2.2.3
```
Then add to your `opencode.json`:
+41 -37
View File
@@ -1,8 +1,8 @@
# Everything Claude Code
# ECC
[![Stars](https://img.shields.io/github/stars/affaan-m/everything-claude-code?style=flat)](https://github.com/affaan-m/everything-claude-code/stargazers)
[![Forks](https://img.shields.io/github/forks/affaan-m/everything-claude-code?style=flat)](https://github.com/affaan-m/everything-claude-code/network/members)
[![Contributors](https://img.shields.io/github/contributors/affaan-m/everything-claude-code?style=flat)](https://github.com/affaan-m/everything-claude-code/graphs/contributors)
[![Stars](https://img.shields.io/github/stars/affaan-m/ECC?style=flat)](https://github.com/affaan-m/ECC/stargazers)
[![Forks](https://img.shields.io/github/forks/affaan-m/ECC?style=flat)](https://github.com/affaan-m/ECC/network/members)
[![Contributors](https://img.shields.io/github/contributors/affaan-m/ECC?style=flat)](https://github.com/affaan-m/ECC/graphs/contributors)
[![npm ecc-universal](https://img.shields.io/npm/dw/ecc-universal?label=ecc-universal%20weekly%20downloads&logo=npm)](https://www.npmjs.com/package/ecc-universal)
[![npm ecc-agentshield](https://img.shields.io/npm/dw/ecc-agentshield?label=ecc-agentshield%20weekly%20downloads&logo=npm)](https://www.npmjs.com/package/ecc-agentshield)
[![GitHub App Install](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Finstalls&logo=github)](https://github.com/marketplace/ecc-tools)
@@ -23,7 +23,7 @@
**Language / 语言 / 語言 / Dil / Язык / Ngôn ngữ**
[**English**](README.md) | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.md) | [한국어](docs/ko-KR/README.md) | [Türkçe](docs/tr/README.md) | [Русский](docs/ru/README.md) | [Tiếng Việt](docs/vi-VN/README.md) | [ไทย](docs/th/README.md) | [Deutsch](docs/de-DE/README.md)
[**English**](README.md) | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.md) | [한국어](docs/ko-KR/README.md) | [Türkçe](docs/tr/README.md) | [Русский](docs/ru/README.md) | [Tiếng Việt](docs/vi-VN/README.md) | [ไทย](docs/th/README.md) | [Deutsch](docs/de-DE/README.md) | [Polski](docs/pl/README.md)
</div>
@@ -46,12 +46,12 @@
<tr>
<td width="33%">
<a href="https://x.com/affaanmustafa/status/2012378465664745795">
<img src="https://github.com/user-attachments/assets/1a471488-59cc-425b-8345-5245c7efbcef" alt="The Shorthand Guide to Everything Claude Code" />
<img src="https://github.com/user-attachments/assets/1a471488-59cc-425b-8345-5245c7efbcef" alt="The Shorthand Guide to ECC" />
</a>
</td>
<td width="33%">
<a href="https://x.com/affaanmustafa/status/2014040193557471352">
<img src="https://github.com/user-attachments/assets/c9ca43bc-b149-427f-b551-af6840c368f0" alt="The Longform Guide to Everything Claude Code" />
<img src="https://github.com/user-attachments/assets/c9ca43bc-b149-427f-b551-af6840c368f0" alt="The Longform Guide to ECC" />
</a>
</td>
<td width="33%">
@@ -80,7 +80,11 @@
## 最新动态
### v2.2.1 — 引导式多 Harness 安装(2026年8月)
### v2.2.3 — pi/core 配置与发布可靠性(2026年10月)
`pi/core` 配置现在仅以 ECC 称呼本项目,发布工作流在校验已发布的包之前会等待 npm 最多五分钟。
### v2.2.2 — 引导式多 Harness 安装(2026年8月)
新增可审查的 Claude Code、Codex 与 Kimi Code 多 Harness 安装流程,并提供同步的 npm 命令入口。
@@ -153,8 +157,8 @@ command -v ecc-memory-mcp
```bash
# 首先克隆仓库
git clone https://github.com/affaan-m/everything-claude-code.git
cd everything-claude-code
git clone https://github.com/affaan-m/ECC.git
cd ECC
# 安装依赖(选择你常用的包管理器)
npm install # 或:pnpm install | yarn install | bun install
@@ -196,7 +200,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/"
/plugin list ecc@ecc
```
**完成!** 你现在可以使用 68 个代理、292 个技能和 94 个命令。
**完成!** 你现在可以使用 68 个代理、293 个技能和 94 个命令。
### multi-* 命令需要额外配置
@@ -266,7 +270,7 @@ export ECC_DISABLED_HOOKS="pre:bash:tmux-reminder,post:edit:typecheck"
这个仓库是一个 **Claude Code 插件** - 直接安装或手动复制组件。
```
everything-claude-code/
ECC/
|-- .claude-plugin/ # 插件与应用商店清单
| |-- plugin.json # 插件元数据与组件路径
| |-- marketplace.json # 用于 /plugin marketplace add 的自托管应用商店目录
@@ -571,7 +575,7 @@ Claude Code v2.1+ 会**按照约定自动加载**已安装插件中的 `hooks/ho
检测到重复的钩子文件:./hooks/hooks.json 指向已加载的文件
```
**历史说明**:该问题曾在本仓库中引发多次「修复-回滚」循环([#29](https://github.com/affaan-m/everything-claude-code/issues/29)、[#52](https://github.com/affaan-m/everything-claude-code/issues/52)、[#103](https://github.com/affaan-m/everything-claude-code/issues/103))。因 Claude Code 版本间行为变更导致混淆,现已添加回归测试,防止该问题再次出现。
**历史说明**:该问题曾在本仓库中引发多次「修复-回滚」循环([#29](https://github.com/affaan-m/ECC/issues/29)、[#52](https://github.com/affaan-m/ECC/issues/52)、[#103](https://github.com/affaan-m/ECC/issues/103))。因 Claude Code 版本间行为变更导致混淆,现已添加回归测试,防止该问题再次出现。
---
@@ -597,7 +601,7 @@ Claude Code v2.1+ 会**按照约定自动加载**已安装插件中的 `hooks/ho
"ecc": {
"source": {
"source": "github",
"repo": "affaan-m/everything-claude-code"
"repo": "affaan-m/ECC"
}
}
},
@@ -613,20 +617,20 @@ Claude Code v2.1+ 会**按照约定自动加载**已安装插件中的 `hooks/ho
>
> ```bash
> # 首先克隆仓库
> git clone https://github.com/affaan-m/everything-claude-code.git
> git clone https://github.com/affaan-m/ECC.git
>
> # 方案 A:用户级规则(对所有项目生效)
> mkdir -p ~/.claude/rules
> cp -r everything-claude-code/rules/common ~/.claude/rules/
> cp -r everything-claude-code/rules/typescript ~/.claude/rules/ # 选择你使用的技术栈
> cp -r everything-claude-code/rules/python ~/.claude/rules/
> cp -r everything-claude-code/rules/golang ~/.claude/rules/
> cp -r everything-claude-code/rules/php ~/.claude/rules/
> cp -r ECC/rules/common ~/.claude/rules/
> cp -r ECC/rules/typescript ~/.claude/rules/ # 选择你使用的技术栈
> cp -r ECC/rules/python ~/.claude/rules/
> cp -r ECC/rules/golang ~/.claude/rules/
> cp -r ECC/rules/php ~/.claude/rules/
>
> # 方案 B:项目级规则(仅对当前项目生效)
> mkdir -p .claude/rules
> cp -r everything-claude-code/rules/common .claude/rules/
> cp -r everything-claude-code/rules/typescript .claude/rules/ # 选择你使用的技术栈
> cp -r ECC/rules/common .claude/rules/
> cp -r ECC/rules/typescript .claude/rules/ # 选择你使用的技术栈
> ```
---
@@ -637,32 +641,32 @@ Claude Code v2.1+ 会**按照约定自动加载**已安装插件中的 `hooks/ho
```bash
# 克隆仓库
git clone https://github.com/affaan-m/everything-claude-code.git
git clone https://github.com/affaan-m/ECC.git
# 将智能体文件复制到 Claude 配置目录
cp everything-claude-code/agents/*.md ~/.claude/agents/
cp ECC/agents/*.md ~/.claude/agents/
# 复制规则目录(通用规则 + 特定语言规则)
mkdir -p ~/.claude/rules
cp -r everything-claude-code/rules/common ~/.claude/rules/
cp -r everything-claude-code/rules/typescript ~/.claude/rules/ # 选择你使用的技术栈
cp -r everything-claude-code/rules/python ~/.claude/rules/
cp -r everything-claude-code/rules/golang ~/.claude/rules/
cp -r everything-claude-code/rules/php ~/.claude/rules/
cp -r ECC/rules/common ~/.claude/rules/
cp -r ECC/rules/typescript ~/.claude/rules/ # 选择你使用的技术栈
cp -r ECC/rules/python ~/.claude/rules/
cp -r ECC/rules/golang ~/.claude/rules/
cp -r ECC/rules/php ~/.claude/rules/
# 优先复制技能模块(核心工作流)
# 新用户推荐:仅复制核心/通用技能
cp -r everything-claude-code/.agents/skills/* ~/.claude/skills/
cp -r everything-claude-code/skills/search-first ~/.claude/skills/
cp -r ECC/.agents/skills/* ~/.claude/skills/
cp -r ECC/skills/search-first ~/.claude/skills/
# 可选:仅在需要时添加细分领域/框架专属技能
# for s in django-patterns django-tdd laravel-patterns springboot-patterns quarkus-patterns; do
# cp -r everything-claude-code/skills/$s ~/.claude/skills/
# cp -r ECC/skills/$s ~/.claude/skills/
# done
# 可选:迁移期间保留维护中的斜杠命令兼容
mkdir -p ~/.claude/commands
cp everything-claude-code/commands/*.md ~/.claude/commands/
cp ECC/commands/*.md ~/.claude/commands/
# 已退役短命令位于 legacy-command-shims/commands/。
# 仅在仍需要 /tdd 等旧名称时,单独复制对应文件。
@@ -818,7 +822,7 @@ node tests/hooks/hooks.test.js
## 社区项目
基于 Everything Claude Code 构建或受其启发的项目:
基于 ECC 构建或受其启发的项目:
| 项目 | 介绍 |
|------|------|
@@ -838,14 +842,14 @@ node tests/hooks/hooks.test.js
## Star 历史
[![Star History Chart](https://api.star-history.com/svg?repos=affaan-m/everything-claude-code&type=Date)](https://star-history.com/#affaan-m/everything-claude-code&Date)
[![Star History Chart](https://api.star-history.com/svg?repos=affaan-m/ECC&type=Date)](https://star-history.com/#affaan-m/ECC&Date)
---
## 链接
- **快速上手指南(入门首选):** [Everything Claude Code 简明指南](https://x.com/affaanmustafa/status/2012378465664745795)
- **长文指南(高阶进阶):** [Everything Claude Code 完整版深度指南](https://x.com/affaanmustafa/status/2014040193557471352)
- **快速上手指南(入门首选):** [ECC 简明指南](https://x.com/affaanmustafa/status/2012378465664745795)
- **长文指南(高阶进阶):** [ECC 完整版深度指南](https://x.com/affaanmustafa/status/2014040193557471352)
- **安全指南:** [安全指南](./the-security-guide.md) | [推文详解](https://x.com/affaanmustafa/status/2033263813387223421)
- **关注作者:** [@affaanmustafa](https://x.com/affaanmustafa)
+1 -1
View File
@@ -78,7 +78,7 @@ GitHub dependency graph may also show Go module aliases such as `github.com/affa
Reports are usually out of scope when they only show:
- local command execution where the user already controls the local shell and no higher-privilege trust boundary is crossed
- screenshots, stale line numbers, or reports against `affaan-m/everything-claude-code` that do not reproduce on current `affaan-m/ECC`
- screenshots, stale line numbers, or reports against `affaan-m/ECC` that do not reproduce on current `affaan-m/ECC`
- self-XSS or social engineering with no repository-controlled exploit path
- dependency graph/package metadata confusion without an install path to an official ECC package
- vulnerabilities in third-party packages unless ECC pins, installs, or executes them in a way that creates extra impact
Loaded 100 of 1044 files, more files were not shown because too many files have changed in this diff. Show more