From 10d160b95e5094b47b7b7e886a716267df68f3b9 Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Mon, 11 May 2026 21:00:45 -0400 Subject: [PATCH] docs: salvage ECC onboarding guide commands --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- AGENTS.md | 6 +- README.md | 12 +- README.zh-CN.md | 2 +- agent.yaml | 2 + commands/ecc-guide.md | 93 +++++ commands/project-init.md | 86 +++++ config/project-stack-mappings.json | 539 +++++++++++++++++++++++++++++ docs/zh-CN/AGENTS.md | 6 +- docs/zh-CN/README.md | 10 +- skills/ecc-guide/SKILL.md | 189 ++++++++++ 12 files changed, 929 insertions(+), 20 deletions(-) create mode 100644 commands/ecc-guide.md create mode 100644 commands/project-init.md create mode 100644 config/project-stack-mappings.json create mode 100644 skills/ecc-guide/SKILL.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index ad52a4e7..947349fb 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -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", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 1fe2e5a8..443fc68a 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -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" diff --git a/AGENTS.md b/AGENTS.md index 5011c4a9..ffb243c7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 diff --git a/README.md b/README.md index dc47acda..03765117 100644 --- a/README.md +++ b/README.md @@ -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 | diff --git a/README.zh-CN.md b/README.zh-CN.md index cd666327..6b0e1c11 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -160,7 +160,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/" /plugin list ecc@ecc ``` -**完成!** 你现在可以使用 54 个代理、207 个技能和 70 个命令。 +**完成!** 你现在可以使用 54 个代理、208 个技能和 72 个命令。 ### multi-* 命令需要额外配置 diff --git a/agent.yaml b/agent.yaml index ee58d0f5..0de0e2d0 100644 --- a/agent.yaml +++ b/agent.yaml @@ -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 diff --git a/commands/ecc-guide.md b/commands/ecc-guide.md new file mode 100644 index 00000000..a1a6c20b --- /dev/null +++ b/commands/ecc-guide.md @@ -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: +/ecc-guide +``` + +## 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: `: + +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//SKILL.md`, `commands/.md`, and `agents/.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 diff --git a/commands/project-init.md b/commands/project-init.md new file mode 100644 index 00000000..73de4022 --- /dev/null +++ b/commands/project-init.md @@ -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 --target --json` + - user named skills: `node scripts/install-plan.js --skills --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 --dry-run --json +``` + +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 diff --git a/config/project-stack-mappings.json b/config/project-stack-mappings.json new file mode 100644 index 00000000..04e66747 --- /dev/null +++ b/config/project-stack-mappings.json @@ -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"] + } + } + ] +} diff --git a/docs/zh-CN/AGENTS.md b/docs/zh-CN/AGENTS.md index 65443453..b6f15070 100644 --- a/docs/zh-CN/AGENTS.md +++ b/docs/zh-CN/AGENTS.md @@ -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 实用工具 diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index e508c07b..d1ec31d9 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -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 条指令 | diff --git a/skills/ecc-guide/SKILL.md b/skills/ecc-guide/SKILL.md new file mode 100644 index 00000000..353c564c --- /dev/null +++ b/skills/ecc-guide/SKILL.md @@ -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 "" 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 --target claude --json +node scripts/install-apply.js --skills --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 . It fits because . + +Canonical file: +Verify with: +Next: +``` + +### Search Results + +```text +Best matches: +- : +- : + +Recommendation: +``` + +### Install Plan Summary + +```text +Detected: +Target: +Plan: +Dry run: +Would change: +Needs approval before apply: +``` + +## 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