docs: salvage ECC onboarding guide commands

This commit is contained in:
Affaan Mustafa
2026-05-11 21:00:45 -04:00
committed by Affaan Mustafa
parent e5229cec92
commit 10d160b95e
12 changed files with 929 additions and 20 deletions

View File

@@ -11,7 +11,7 @@
{
"name": "ecc",
"source": "./",
"description": "The most comprehensive Claude Code plugin — 54 agents, 207 skills, 70 legacy command shims, selective install profiles, and production-ready hooks for TDD, security scanning, code review, and continuous learning",
"description": "The most comprehensive Claude Code plugin — 54 agents, 208 skills, 72 legacy command shims, selective install profiles, and production-ready hooks for TDD, security scanning, code review, and continuous learning",
"version": "2.0.0-rc.1",
"author": {
"name": "Affaan Mustafa",

View File

@@ -1,7 +1,7 @@
{
"name": "ecc",
"version": "2.0.0-rc.1",
"description": "Battle-tested Claude Code plugin for engineering teams — 54 agents, 207 skills, 70 legacy command shims, production-ready hooks, and selective install workflows evolved through continuous real-world use",
"description": "Battle-tested Claude Code plugin for engineering teams — 54 agents, 208 skills, 72 legacy command shims, production-ready hooks, and selective install workflows evolved through continuous real-world use",
"author": {
"name": "Affaan Mustafa",
"url": "https://x.com/affaanmustafa"

View File

@@ -1,6 +1,6 @@
# Everything Claude Code (ECC) — Agent Instructions
This is a **production-ready AI coding plugin** providing 54 specialized agents, 207 skills, 70 commands, and automated hook workflows for software development.
This is a **production-ready AI coding plugin** providing 54 specialized agents, 208 skills, 72 commands, and automated hook workflows for software development.
**Version:** 2.0.0-rc.1
@@ -147,8 +147,8 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat
```
agents/ — 54 specialized subagents
skills/ — 207 workflow skills and domain knowledge
commands/ — 70 slash commands
skills/ — 208 workflow skills and domain knowledge
commands/ — 72 slash commands
hooks/ — Trigger-based automations
rules/ — Always-follow guidelines (common + per-language)
scripts/ — Cross-platform Node.js utilities

View File

@@ -89,7 +89,7 @@ This repo is the raw code only. The guides explain everything.
### v2.0.0-rc.1 — Surface Refresh, Operator Workflows, and ECC 2.0 Alpha (Apr 2026)
- **Dashboard GUI** — New Tkinter-based desktop application (`ecc_dashboard.py` or `npm run dashboard`) with dark/light theme toggle, font customization, and project logo in header and taskbar.
- **Public surface synced to the live repo** — metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface: 54 agents, 207 skills, and 70 legacy command shims.
- **Public surface synced to the live repo** — metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface: 54 agents, 208 skills, and 72 legacy command shims.
- **Operator and outbound workflow expansion** — `brand-voice`, `social-graph-ranker`, `connections-optimizer`, `customer-billing-ops`, `ecc-tools-cost-audit`, `google-workspace-ops`, `project-flow-ops`, and `workspace-surface-audit` round out the operator lane.
- **Media and launch tooling** — `manim-video`, `remotion-video-creation`, and upgraded social publishing surfaces make technical explainers and launch content part of the same system.
- **Framework and product surface growth** — `nestjs-patterns`, richer Codex/OpenCode install surfaces, and expanded cross-harness packaging keep the repo usable beyond Claude Code alone.
@@ -358,7 +358,7 @@ If you stacked methods, clean up in this order:
/plugin list ecc@ecc
```
**That's it!** You now have access to 54 agents, 207 skills, and 70 legacy command shims.
**That's it!** You now have access to 54 agents, 208 skills, and 72 legacy command shims.
### Dashboard GUI
@@ -1350,8 +1350,8 @@ The configuration is automatically detected from `.opencode/opencode.json`.
| Feature | Claude Code | OpenCode | Status |
|---------|-------------|----------|--------|
| Agents | PASS: 54 agents | PASS: 12 agents | **Claude Code leads** |
| Commands | PASS: 70 commands | PASS: 35 commands | **Claude Code leads** |
| Skills | PASS: 207 skills | PASS: 37 skills | **Claude Code leads** |
| Commands | PASS: 72 commands | PASS: 35 commands | **Claude Code leads** |
| Skills | PASS: 208 skills | PASS: 37 skills | **Claude Code leads** |
| Hooks | PASS: 8 event types | PASS: 11 events | **OpenCode has more!** |
| Rules | PASS: 29 rules | PASS: 13 instructions | **Claude Code leads** |
| MCP Servers | PASS: 14 servers | PASS: Full | **Full parity** |
@@ -1455,8 +1455,8 @@ ECC is the **first plugin to maximize every major AI coding tool**. Here's how e
| Feature | Claude Code | Cursor IDE | Codex CLI | OpenCode |
|---------|------------|------------|-----------|----------|
| **Agents** | 54 | Shared (AGENTS.md) | Shared (AGENTS.md) | 12 |
| **Commands** | 70 | Shared | Instruction-based | 35 |
| **Skills** | 207 | Shared | 10 (native format) | 37 |
| **Commands** | 72 | Shared | Instruction-based | 35 |
| **Skills** | 208 | Shared | 10 (native format) | 37 |
| **Hook Events** | 8 types | 15 types | None yet | 11 types |
| **Hook Scripts** | 20+ scripts | 16 scripts (DRY adapter) | N/A | Plugin hooks |
| **Rules** | 34 (common + lang) | 34 (YAML frontmatter) | Instruction-based | 13 instructions |

View File

@@ -160,7 +160,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/"
/plugin list ecc@ecc
```
**完成!** 你现在可以使用 54 个代理、207 个技能和 70 个命令。
**完成!** 你现在可以使用 54 个代理、208 个技能和 72 个命令。
### multi-* 命令需要额外配置

View File

@@ -152,6 +152,7 @@ commands:
- cpp-build
- cpp-review
- cpp-test
- ecc-guide
- evolve
- fastapi-review
- feature-dev
@@ -190,6 +191,7 @@ commands:
- pm2
- projects
- promote
- project-init
- prp-commit
- prp-implement
- prp-plan

93
commands/ecc-guide.md Normal file
View File

@@ -0,0 +1,93 @@
---
description: Navigate ECC's current agents, skills, commands, hooks, install profiles, and docs from the live repository surface.
---
# /ecc-guide
Use this command as a conversational map of Everything Claude Code. It should help the user discover the right ECC surface for their task without dumping the entire README or stale catalog counts.
## Usage
```text
/ecc-guide
/ecc-guide setup
/ecc-guide skills
/ecc-guide commands
/ecc-guide hooks
/ecc-guide install
/ecc-guide find: <query>
/ecc-guide <feature-or-file-name>
```
## Operating Rules
1. Read current repository files before answering when the checkout is available.
2. Prefer current filesystem/catalog data over hard-coded counts.
3. Keep the first answer short, then offer specific drill-down paths.
4. Link users to canonical files instead of copying long sections.
5. Do not invent commands, skills, agents, or install profiles that are not present.
## What To Inspect
Use these files as the canonical map:
- `README.md` for install paths, reset/uninstall guidance, and high-level positioning
- `AGENTS.md` for contributor and project-structure guidance
- `agent.yaml` for exported agent and command surface
- `commands/` for maintained slash-command shims
- `skills/*/SKILL.md` for reusable skill workflows
- `agents/*.md` for delegated agent roles
- `hooks/README.md` and `hooks/hooks.json` for hook behavior
- `manifests/install-*.json` for selective install modules, components, and profiles
- `scripts/ci/catalog.js --json` for live catalog counts when running inside ECC
## Response Patterns
### No Arguments
Give a compact menu:
- setup and install
- choosing skills
- command compatibility shims
- agents and delegation
- hooks and safety
- troubleshooting an install
- finding a specific feature
Then ask what they want to do next.
### Topic Lookup
For topics like `skills`, `commands`, `hooks`, `install`, or `agents`:
1. Summarize the current surface in 3-6 bullets.
2. Point to the canonical directories/files.
3. Suggest one or two commands that can verify the state.
4. Avoid exhaustive lists unless the user asks for one.
### Search Mode
For `find: <query>`:
1. Search the relevant files with `rg`.
2. Group results by surface: skills, commands, agents, rules, docs, hooks.
3. Return the strongest matches first with file paths.
4. Recommend the next action for each match.
### Feature Lookup
For a specific feature name:
1. Check exact paths first, such as `skills/<name>/SKILL.md`, `commands/<name>.md`, and `agents/<name>.md`.
2. If exact lookup fails, search with `rg`.
3. Explain what the feature does, when to use it, and what file is canonical.
4. Mention adjacent features only when they reduce confusion.
## Related Commands
- `/project-init` for stack-aware ECC onboarding of a target project
- `/harness-audit` for deterministic repo readiness scoring
- `/skill-health` for skill quality checks
- `/skill-create` for extracting a new skill from local git history
- `/security-scan` for Claude/OpenCode configuration security review

86
commands/project-init.md Normal file
View File

@@ -0,0 +1,86 @@
---
description: Detect a project's stack and produce a dry-run ECC onboarding plan using the repository's install manifests and stack mappings.
---
# /project-init
Create a safe, reviewable ECC onboarding plan for the current project. This command should start in dry-run mode and only write files after explicit user approval.
## Usage
```text
/project-init
/project-init --dry-run
/project-init --target claude
/project-init --target cursor
/project-init --skills continuous-learning-v2,security-review
/project-init --config ecc-install.json
```
## Safety Rules
1. Default to dry-run. Do not modify `CLAUDE.md`, settings files, rules, skills, or install state until the user approves the concrete plan.
2. Preserve existing project guidance. If `CLAUDE.md`, `.claude/settings.local.json`, `.cursor/`, `.codex/`, `.gemini/`, `.opencode/`, `.codebuddy/`, `.joycode/`, or `.qwen/` already exists, inspect it and propose a merge/append plan instead of overwriting.
3. Use ECC's installer and manifest tooling. Do not hand-copy files or clone arbitrary remotes as an install shortcut.
4. Keep permissions narrow. Any generated settings should match detected build/test/lint tools and avoid broad shell access.
5. Report exactly what would change before applying anything.
## Detection Inputs
Read the current project root and detect stack signals from:
- package manager files: `package.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lockb`
- language manifests: `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pom.xml`, `build.gradle`, `build.gradle.kts`
- framework files: `next.config.*`, `vite.config.*`, `tailwind.config.*`, `Dockerfile`, `docker-compose.yml`
- ECC config: `ecc-install.json`
- optional stack map: `config/project-stack-mappings.json` in the ECC repo
When the ECC checkout is available, use `config/project-stack-mappings.json` as the stack-to-rules/skills reference. If the file is unavailable, fall back to the installed ECC manifests and explicit user choices.
## Planning Flow
1. Identify the target harness. Default to `claude` unless the user asks for `cursor`, `codex`, `gemini`, `opencode`, `codebuddy`, `joycode`, or `qwen`.
2. Detect stacks from project files and show the evidence for each match.
3. Resolve the smallest useful ECC plan:
- project has an `ecc-install.json`: `node scripts/install-plan.js --config ecc-install.json --json`
- user named a profile: `node scripts/install-plan.js --profile <profile> --target <target> --json`
- user named skills: `node scripts/install-plan.js --skills <skill-ids> --target <target> --json`
- only language stacks are detected: use the legacy language install dry-run with those language names
4. Run a dry-run apply command before writing:
```bash
node scripts/install-apply.js --target <target> --dry-run --json <language-or-profile-args>
```
5. Summarize detected stacks, selected modules/components/skills, target paths, skipped unsupported modules, and files that would be changed.
6. Ask for approval before applying the non-dry-run command.
## Output Contract
Return:
1. detected stack evidence
2. proposed target harness
3. exact dry-run command used
4. exact apply command to run after approval
5. files/directories that would be created or changed
6. warnings about existing files, broad permissions, missing scripts, or unsupported targets
## CLAUDE.md Guidance
If the user wants a `CLAUDE.md` starter, generate it separately from the installer plan and keep it minimal:
- build command, if detected
- test command, if detected
- lint/typecheck command, if detected
- dev server command, if detected
- repo-specific notes from existing package scripts or manifests
Never replace an existing `CLAUDE.md` without showing a diff and receiving approval.
## Related
- `config/project-stack-mappings.json` for stack-to-surface hints
- `scripts/install-plan.js` for deterministic plan resolution
- `scripts/install-apply.js` for dry-run and apply operations
- `/ecc-guide` for interactive feature discovery before installing

View File

@@ -0,0 +1,539 @@
{
"version": 1,
"description": "Maps project indicator files to ECC skills, rules, hooks, and default commands. Used by /project-init to auto-configure projects.",
"stacks": [
{
"id": "typescript",
"name": "TypeScript / JavaScript",
"indicators": [
{ "file": "tsconfig.json" },
{ "file": "tsconfig.*.json" },
{ "file": "package.json", "contains": "typescript" }
],
"rules": ["common", "typescript"],
"skills": [
"coding-standards",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["npx tsc --noEmit", "npm run build"],
"test": ["npm test", "npx jest", "npx vitest"],
"lint": ["npx eslint .", "npx tsc --noEmit"],
"format": ["npx prettier --write ."]
},
"permissions": {
"allow": ["npx tsc", "npx eslint", "npx prettier", "npm test", "npm run *", "npx jest", "npx vitest"],
"deny": ["npm publish"]
}
},
{
"id": "javascript",
"name": "JavaScript (Node.js)",
"indicators": [
{ "file": "package.json" },
{ "file": ".eslintrc*" },
{ "file": "eslint.config.*" }
],
"rules": ["common", "typescript"],
"skills": [
"coding-standards",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["npm run build"],
"test": ["npm test", "npx jest", "npx vitest"],
"lint": ["npx eslint ."],
"format": ["npx prettier --write ."]
},
"permissions": {
"allow": ["npx eslint", "npx prettier", "npm test", "npm run *", "npx jest", "npx vitest"],
"deny": ["npm publish"]
}
},
{
"id": "react",
"name": "React",
"indicators": [
{ "file": "package.json", "contains": "\"react\":" }
],
"rules": ["common", "typescript", "web"],
"skills": [
"coding-standards",
"frontend-patterns",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["npm run build"],
"test": ["npm test", "npx jest", "npx vitest"],
"lint": ["npx eslint ."],
"format": ["npx prettier --write ."]
},
"permissions": {
"allow": ["npx eslint", "npx prettier", "npm test", "npm run *", "npx jest", "npx vitest"],
"deny": ["npm publish"]
}
},
{
"id": "nextjs",
"name": "Next.js",
"indicators": [
{ "file": "next.config.*" },
{ "file": "package.json", "contains": "\"next\":" }
],
"rules": ["common", "typescript", "web"],
"skills": [
"coding-standards",
"frontend-patterns",
"backend-patterns",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["npm run build", "npx next build"],
"test": ["npm test", "npx jest", "npx vitest"],
"lint": ["npx next lint", "npx eslint ."],
"format": ["npx prettier --write ."],
"dev": ["npm run dev", "npx next dev"]
},
"permissions": {
"allow": ["npx next *", "npx eslint", "npx prettier", "npm test", "npm run *", "npx jest", "npx vitest"],
"deny": ["npm publish"]
}
},
{
"id": "golang",
"name": "Go",
"indicators": [
{ "file": "go.mod" },
{ "file": "go.sum" }
],
"rules": ["common", "golang"],
"skills": [
"golang-patterns",
"golang-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["go build ./..."],
"test": ["go test ./..."],
"lint": ["golangci-lint run", "go vet ./..."],
"format": ["gofmt -w ."]
},
"permissions": {
"allow": ["go build *", "go test *", "go vet *", "go mod *", "go run *", "golangci-lint *", "gofmt *"],
"deny": []
}
},
{
"id": "python",
"name": "Python",
"indicators": [
{ "file": "pyproject.toml" },
{ "file": "setup.py" },
{ "file": "setup.cfg" },
{ "file": "requirements.txt" },
{ "file": "Pipfile" },
{ "file": "poetry.lock" }
],
"rules": ["common", "python"],
"skills": [
"python-patterns",
"python-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["python -m build", "pip install -e ."],
"test": ["pytest", "python -m pytest"],
"lint": ["ruff check .", "flake8", "mypy ."],
"format": ["ruff format .", "black ."]
},
"permissions": {
"allow": ["python *", "pip install *", "pytest *", "ruff *", "black *", "mypy *", "flake8 *"],
"deny": ["pip install --user *"]
}
},
{
"id": "rust",
"name": "Rust",
"indicators": [
{ "file": "Cargo.toml" },
{ "file": "Cargo.lock" }
],
"rules": ["common", "rust"],
"skills": [
"rust-patterns",
"rust-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["cargo build"],
"test": ["cargo test"],
"lint": ["cargo clippy -- -D warnings"],
"format": ["cargo fmt"]
},
"permissions": {
"allow": ["cargo build *", "cargo test *", "cargo clippy *", "cargo fmt *", "cargo run *", "cargo check *"],
"deny": ["cargo publish"]
}
},
{
"id": "java",
"name": "Java",
"indicators": [
{ "file": "pom.xml" },
{ "file": "build.gradle" },
{ "file": "build.gradle.kts" }
],
"rules": ["common", "java"],
"skills": [
"java-coding-standards",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["./mvnw compile", "./gradlew build", "mvn compile", "gradle build"],
"test": ["./mvnw test", "./gradlew test", "mvn test", "gradle test"],
"lint": ["./mvnw checkstyle:check", "./gradlew checkstyleMain"],
"format": ["./mvnw spotless:apply", "./gradlew spotlessApply"]
},
"permissions": {
"allow": ["./mvnw *", "./gradlew *", "mvn *", "gradle *", "java *"],
"deny": ["./mvnw deploy", "./gradlew publish", "mvn deploy", "gradle publish"]
}
},
{
"id": "springboot",
"name": "Spring Boot (Java/Kotlin)",
"indicators": [
{ "file": "pom.xml", "contains": "spring-boot" },
{ "file": "build.gradle", "contains": "spring-boot" },
{ "file": "build.gradle.kts", "contains": "spring-boot" }
],
"rules": ["common", "java"],
"skills": [
"springboot-patterns",
"springboot-tdd",
"springboot-verification",
"springboot-security",
"java-coding-standards",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["./mvnw compile", "./gradlew build"],
"test": ["./mvnw test", "./gradlew test"],
"lint": ["./mvnw checkstyle:check"],
"format": ["./mvnw spotless:apply"],
"dev": ["./mvnw spring-boot:run", "./gradlew bootRun"]
},
"permissions": {
"allow": ["./mvnw *", "./gradlew *", "mvn *", "gradle *", "java *"],
"deny": ["./mvnw deploy", "./gradlew publish", "mvn deploy", "gradle publish"]
}
},
{
"id": "kotlin",
"name": "Kotlin",
"indicators": [
{ "file": "build.gradle.kts" },
{ "file": "settings.gradle.kts" },
{ "file": "build.gradle", "contains": "kotlin" }
],
"rules": ["common", "kotlin"],
"skills": [
"kotlin-patterns",
"kotlin-testing",
"kotlin-coroutines-flows",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["./gradlew build"],
"test": ["./gradlew test"],
"lint": ["./gradlew ktlintCheck", "./gradlew detekt"],
"format": ["./gradlew ktlintFormat"]
},
"permissions": {
"allow": ["./gradlew *", "gradle *", "kotlin *"],
"deny": ["./gradlew publish"]
}
},
{
"id": "swift",
"name": "Swift / SwiftUI",
"indicators": [
{ "file": "Package.swift" },
{ "file": "*.xcodeproj" },
{ "file": "*.xcworkspace" },
{ "file": "Podfile" }
],
"rules": ["common", "swift"],
"skills": [
"swiftui-patterns",
"swift-concurrency-6-2",
"swift-actor-persistence",
"swift-protocol-di-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["swift build", "xcodebuild build"],
"test": ["swift test", "xcodebuild test"],
"lint": ["swiftlint"],
"format": ["swiftformat ."]
},
"permissions": {
"allow": ["swift build *", "swift test *", "swift run *", "xcodebuild *", "swiftlint *", "swiftformat *"],
"deny": []
}
},
{
"id": "dart-flutter",
"name": "Dart / Flutter",
"indicators": [
{ "file": "pubspec.yaml" },
{ "file": "pubspec.lock" }
],
"rules": ["common", "dart"],
"skills": [
"dart-flutter-patterns",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["flutter build", "dart compile"],
"test": ["flutter test", "dart test"],
"lint": ["dart analyze"],
"format": ["dart format ."]
},
"permissions": {
"allow": ["flutter *", "dart *"],
"deny": ["flutter pub publish"]
}
},
{
"id": "php-laravel",
"name": "PHP / Laravel",
"indicators": [
{ "file": "composer.json" },
{ "file": "artisan" },
{ "file": "composer.lock" }
],
"rules": ["common", "php"],
"skills": [
"laravel-patterns",
"laravel-tdd",
"laravel-verification",
"laravel-security",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["composer install"],
"test": ["php artisan test", "vendor/bin/phpunit", "vendor/bin/pest"],
"lint": ["vendor/bin/phpstan analyse", "vendor/bin/pint"],
"format": ["vendor/bin/pint"]
},
"permissions": {
"allow": ["php artisan *", "composer *", "vendor/bin/*"],
"deny": []
}
},
{
"id": "ruby",
"name": "Ruby / Rails",
"indicators": [
{ "file": "Gemfile" },
{ "file": "Gemfile.lock" },
{ "file": "Rakefile" }
],
"rules": ["common"],
"skills": [
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["bundle install"],
"test": ["bundle exec rspec", "bundle exec rake test"],
"lint": ["bundle exec rubocop"],
"format": ["bundle exec rubocop -A"]
},
"permissions": {
"allow": ["bundle exec *", "rails *", "rake *", "ruby *"],
"deny": ["gem push"]
}
},
{
"id": "csharp-dotnet",
"name": "C# / .NET",
"indicators": [
{ "file": "*.csproj" },
{ "file": "*.sln" },
{ "file": "global.json" }
],
"rules": ["common", "csharp"],
"skills": [
"dotnet-patterns",
"csharp-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["dotnet build"],
"test": ["dotnet test"],
"lint": ["dotnet format --verify-no-changes"],
"format": ["dotnet format"]
},
"permissions": {
"allow": ["dotnet build *", "dotnet test *", "dotnet run *", "dotnet format *"],
"deny": ["dotnet nuget push"]
}
},
{
"id": "cpp",
"name": "C / C++",
"indicators": [
{ "file": "CMakeLists.txt" },
{ "file": "Makefile" },
{ "file": "meson.build" },
{ "file": "*.vcxproj" }
],
"rules": ["common", "cpp"],
"skills": [
"cpp-coding-standards",
"cpp-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["cmake --build build", "make"],
"test": ["ctest --test-dir build", "make test"],
"lint": ["clang-tidy -p build"],
"format": ["clang-format -i **/*.cpp **/*.h **/*.c **/*.hpp"]
},
"permissions": {
"allow": ["cmake *", "make *", "ctest *", "clang-tidy *", "clang-format *", "gcc *", "g++ *"],
"deny": []
}
},
{
"id": "perl",
"name": "Perl",
"indicators": [
{ "file": "cpanfile" },
{ "file": "Makefile.PL" },
{ "file": "Build.PL" },
{ "file": "dist.ini" }
],
"rules": ["common", "perl"],
"skills": [
"perl-patterns",
"perl-testing",
"perl-security",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["perl Makefile.PL && make", "perl Build.PL && ./Build"],
"test": ["prove -lr t/", "make test"],
"lint": ["perlcritic lib/"],
"format": ["perltidy -b lib/**/*.pl"]
},
"permissions": {
"allow": ["perl *", "prove *", "make *", "perlcritic *", "perltidy *"],
"deny": []
}
},
{
"id": "django",
"name": "Django (Python)",
"indicators": [
{ "file": "manage.py" },
{ "file": "requirements.txt", "contains": "django" },
{ "file": "pyproject.toml", "contains": "django" }
],
"rules": ["common", "python"],
"skills": [
"django-patterns",
"django-tdd",
"django-verification",
"django-security",
"python-patterns",
"python-testing",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["pip install -e ."],
"test": ["python manage.py test", "pytest"],
"lint": ["ruff check .", "mypy ."],
"format": ["ruff format .", "black ."],
"dev": ["python manage.py runserver"]
},
"permissions": {
"allow": ["python *", "pip install *", "pytest *", "ruff *", "black *", "mypy *"],
"deny": []
}
},
{
"id": "android",
"name": "Android (Kotlin/Java)",
"indicators": [
{ "file": "settings.gradle.kts", "contains": "android" },
{ "file": "build.gradle", "contains": "android" },
{ "file": "AndroidManifest.xml" }
],
"rules": ["common", "kotlin"],
"skills": [
"android-clean-architecture",
"kotlin-patterns",
"kotlin-testing",
"kotlin-coroutines-flows",
"compose-multiplatform-patterns",
"tdd-workflow",
"verification-loop"
],
"commands": {
"build": ["./gradlew assembleDebug"],
"test": ["./gradlew testDebugUnitTest"],
"lint": ["./gradlew lint", "./gradlew ktlintCheck"],
"format": ["./gradlew ktlintFormat"]
},
"permissions": {
"allow": ["./gradlew *", "adb *"],
"deny": []
}
},
{
"id": "docker",
"name": "Docker / Containerized",
"indicators": [
{ "file": "Dockerfile" },
{ "file": "docker-compose.yml" },
{ "file": "docker-compose.yaml" },
{ "file": "compose.yml" },
{ "file": "compose.yaml" }
],
"rules": [],
"skills": [
"docker-patterns",
"deployment-patterns"
],
"commands": {
"build": ["docker compose build", "docker build ."],
"test": ["docker compose run --rm app test"],
"dev": ["docker compose up"]
},
"permissions": {
"allow": ["docker compose *", "docker build *"],
"deny": ["docker push"]
}
}
]
}

View File

@@ -1,6 +1,6 @@
# Everything Claude Code (ECC) — 智能体指令
这是一个**生产就绪的 AI 编码插件**,提供 54 个专业代理、207 项技能、70 条命令以及自动化钩子工作流,用于软件开发。
这是一个**生产就绪的 AI 编码插件**,提供 54 个专业代理、208 项技能、72 条命令以及自动化钩子工作流,用于软件开发。
**版本:** 2.0.0-rc.1
@@ -147,8 +147,8 @@
```
agents/ — 54 个专业子代理
skills/ — 207 个工作流技能和领域知识
commands/ — 70 个斜杠命令
skills/ — 208 个工作流技能和领域知识
commands/ — 72 个斜杠命令
hooks/ — 基于触发的自动化
rules/ — 始终遵循的指导方针(通用 + 每种语言)
scripts/ — 跨平台 Node.js 实用工具

View File

@@ -224,7 +224,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/"
/plugin list ecc@ecc
```
**搞定!** 你现在可以使用 54 个智能体、207 项技能和 70 个命令了。
**搞定!** 你现在可以使用 54 个智能体、208 项技能和 72 个命令了。
***
@@ -1133,8 +1133,8 @@ opencode
| 功能特性 | Claude Code | OpenCode | 状态 |
|---------|-------------|----------|--------|
| 智能体 | PASS: 54 个 | PASS: 12 个 | **Claude Code 领先** |
| 命令 | PASS: 70 个 | PASS: 35 个 | **Claude Code 领先** |
| 技能 | PASS: 207 项 | PASS: 37 项 | **Claude Code 领先** |
| 命令 | PASS: 72 个 | PASS: 35 个 | **Claude Code 领先** |
| 技能 | PASS: 208 项 | PASS: 37 项 | **Claude Code 领先** |
| 钩子 | PASS: 8 种事件类型 | PASS: 11 种事件 | **OpenCode 更多!** |
| 规则 | PASS: 29 条 | PASS: 13 条指令 | **Claude Code 领先** |
| MCP 服务器 | PASS: 14 个 | PASS: 完整 | **完全对等** |
@@ -1241,8 +1241,8 @@ ECC 是**第一个最大化利用每个主要 AI 编码工具的插件**。以
| 功能特性 | Claude Code | Cursor IDE | Codex CLI | OpenCode |
|---------|------------|------------|-----------|----------|
| **智能体** | 54 | 共享 (AGENTS.md) | 共享 (AGENTS.md) | 12 |
| **命令** | 70 | 共享 | 基于指令 | 35 |
| **技能** | 207 | 共享 | 10 (原生格式) | 37 |
| **命令** | 72 | 共享 | 基于指令 | 35 |
| **技能** | 208 | 共享 | 10 (原生格式) | 37 |
| **钩子事件** | 8 种类型 | 15 种类型 | 暂无 | 11 种类型 |
| **钩子脚本** | 20+ 个脚本 | 16 个脚本 (DRY 适配器) | N/A | 插件钩子 |
| **规则** | 34 (通用 + 语言) | 34 (YAML 前页) | 基于指令 | 13 条指令 |

189
skills/ecc-guide/SKILL.md Normal file
View File

@@ -0,0 +1,189 @@
---
name: ecc-guide
description: Guide users through ECC's current agents, skills, commands, hooks, rules, install profiles, and project onboarding by reading the live repository surface before answering.
origin: community
---
# ECC Guide
Use this skill when a user needs help understanding, navigating, installing, or choosing parts of Everything Claude Code.
## When To Use
Use this skill when the user:
- asks what ECC includes
- wants help finding a skill, command, agent, hook, rule, or install profile
- is new to the repository and needs a guided path
- asks "how do I do X with ECC?"
- asks which ECC components fit a project
- needs a lightweight explanation of how commands, skills, agents, hooks, and rules relate
- is confused by install paths, duplicate installs, reset/uninstall, or selective install options
## Core Principle
Answer from current files, not memory. ECC changes quickly, so hard-coded catalog counts, feature lists, and install instructions go stale.
When the ECC repository is available, inspect the relevant files before giving a concrete answer:
```bash
node scripts/ci/catalog.js --json
find skills -maxdepth 2 -name SKILL.md | sort
find commands -maxdepth 1 -name '*.md' | sort
find agents -maxdepth 1 -name '*.md' | sort
node scripts/install-plan.js --list-profiles
node scripts/install-plan.js --list-components --json
```
Use the smallest set of reads needed for the user's question.
## Repository Map
- `README.md`: install paths, uninstall/reset guidance, public positioning, FAQs
- `AGENTS.md`: contributor guidance and project structure
- `agent.yaml`: exported gitagent surface and command list
- `commands/`: maintained slash-command compatibility shims
- `skills/*/SKILL.md`: reusable workflows and domain playbooks
- `agents/*.md`: delegated subagent role prompts
- `rules/`: language and harness rules
- `hooks/README.md`, `hooks/hooks.json`, `scripts/hooks/`: hook behavior and safety gates
- `manifests/install-*.json`: selective install modules, components, profiles, and target support
- `docs/`: harness guides, architecture notes, translated docs, release docs
## Response Style
Lead with the answer, then give the next action. Most users do not need a full catalog dump.
Good first response shape:
1. what to use
2. why it fits
3. exact file or command to inspect
4. one next command or question
Avoid:
- listing every skill or command by default
- repeating large README sections
- recommending retired command shims when a skill-first path exists
- claiming a component exists without checking the filesystem
- replacing install guidance with manual copy commands when the managed installer supports the target
## Common Tasks
### New User Onboarding
Give a short menu:
- install or reset ECC
- pick skills for a project
- understand commands vs skills
- inspect hooks and safety behavior
- run a harness audit
- find a specific workflow
Point to `README.md` for install/reset and `/project-init` for project-specific onboarding.
### Feature Discovery
For "what should I use for X?":
1. Search `skills/`, `commands/`, and `agents/`.
2. Prefer skills as the primary workflow surface.
3. Use commands only when they are a maintained compatibility shim or a user explicitly wants slash-command behavior.
4. Mention agents when delegation is useful.
Useful searches:
```bash
rg -n "<query>" skills commands agents docs
find skills -maxdepth 2 -name SKILL.md | sort
```
### Install Guidance
Use managed install paths:
```bash
node scripts/install-plan.js --list-profiles
node scripts/install-plan.js --profile minimal --target claude --json
node scripts/install-apply.js --profile minimal --target claude --dry-run
```
For specific skill installs:
```bash
node scripts/install-plan.js --skills <skill-id> --target claude --json
node scripts/install-apply.js --skills <skill-id> --target claude --dry-run
```
Warn users not to stack plugin installs and full manual/profile installs unless they intentionally want duplicate surfaces.
### Project Onboarding
Use `/project-init` when the user wants ECC configured for a target repo. The expected sequence is:
1. detect the stack from project files
2. resolve a dry-run install plan
3. inspect existing `CLAUDE.md` and settings files
4. ask before applying changes
5. keep generated guidance minimal and repo-specific
### Troubleshooting
Ask for the target harness and install path first, then inspect:
- plugin install metadata
- `.claude/`, `.cursor/`, `.codex/`, `.gemini/`, `.opencode/`, `.codebuddy/`, `.joycode/`, or `.qwen/`
- `hooks/hooks.json`
- install-state files
- relevant command/skill files
For repo health, suggest:
```bash
npm run harness:audit -- --format text
npm run observability:ready
npm test
```
## Output Templates
### Short Recommendation
```text
Use <skill-or-command>. It fits because <reason>.
Canonical file: <path>
Verify with: <command>
Next: <one concrete action>
```
### Search Results
```text
Best matches:
- <path>: <why it matters>
- <path>: <why it matters>
Recommendation: <which one to use first and why>
```
### Install Plan Summary
```text
Detected: <stack evidence>
Target: <harness>
Plan: <profile/modules/skills>
Dry run: <command>
Would change: <paths>
Needs approval before apply: <yes/no>
```
## Related Surfaces
- `/project-init`: stack-aware onboarding plan for a target repo
- `/harness-audit`: deterministic readiness scorecard
- `/skill-health`: skill quality review
- `/skill-create`: generate a new skill from local git history
- `/security-scan`: inspect Claude/OpenCode configuration security