57 Commits

  • fix(skills): replace star ratings with ASCII N/5 (#2194)
    Change-Id: I72b7d094bb982070706595255536b69aa5998862
  • fix: make plugin hooks run on Node 21+ and green the suite under modern Node (#2184)
    ROOT CAUSE: hooks load plugin-hook-bootstrap.js via
    `node -e "...; process.argv.splice(1,0,s); require(s)"`. On Node 21+,
    require.main is `undefined` under --eval, so the `if (require.main === module)`
    guard was false and main() never ran — every plugin hook silently no-op'd
    (e.g. the MCP-health PreToolUse hook stopped blocking). CI (Node 18/20) hid
    this; it only surfaces on Node 21+. Fix: also run main() when require.main is
    undefined (the eval-bootstrap case), while staying dormant on real imports.
    
    Also clears pre-existing main debt the full local suite enforces:
    - catalog:sync — README/docs agent+skill counts drifted after recent merges
    - tests/ci/supply-chain-watch-workflow: update checkout SHA to the merged v6.0.3 (#2183)
    - markdownlint + check-unicode-safety --write across docs/skills
    
    Suite: 2683/2683 green under Node v25; lint + unicode clean.
    
    Co-authored-by: ECC Test <ecc@example.test>
  • fix(commands): resolve active plugin root in /instinct-status (#2037) (#2059)
    The `/instinct-status` slash command template expanded
    `${CLAUDE_PLUGIN_ROOT}` directly and documented a manual-install
    fallback to `~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py`.
    When users had both an active plugin install (under
    `~/.claude/plugins/cache/<slug>/<org>/<version>/`) and a legacy
    `~/.claude/skills/continuous-learning-v2/` directory left over from a
    previous manual install, an empty `CLAUDE_PLUGIN_ROOT` (which Claude
    Code does not always populate in slash-command shell contexts) silently
    made the command read the stale legacy install while the active plugin
    hooks and observer wrote to the new XDG path. The user saw "No
    instincts found" while the system was actively learning — exactly the
    divergence the bug reporter spent hours diagnosing.
    
    Replace the brittle two-block template with the same inline resolver
    pattern that `hooks/hooks.json` and `/sessions` / `/skill-health`
    already use: env var → standard install → known plugin roots → plugin
    cache walk → fallback. The resolver is the canonical `INLINE_RESOLVE`
    constant from `scripts/lib/resolve-ecc-root.js`, so no new code is
    introduced — just consistent adoption of the existing pattern.
    
    Apply the same fix to all five copies of the command:
      - commands/instinct-status.md (canonical)
      - .opencode/commands/instinct-status.md
      - docs/zh-CN/commands/instinct-status.md
      - docs/ja-JP/commands/instinct-status.md
      - docs/tr/commands/instinct-status.md
    
    Extend tests/lib/command-plugin-root.test.js with an assertion that the
    canonical instinct-status.md uses the inline resolver and no longer
    hard-codes the legacy `~/.claude/skills/...` fallback (regression
    guard).
    
    zh-CN copy: polish the Chinese phrasing per LanguageTool feedback
    (`使用与 ... 相同的解析器` → `以与 ... 相同的解析器`) so the verb is
    introduced by an explicit preposition instead of reading as an awkward
    verb-object construction.
  • fix(docs): sync marketplace add URL across translated READMEs (#2050) (#2068)
    PR #2050 updated the root README.zh-CN.md install commands after the
    everything-claude-code → ECC rename, but the same stale marketplace URL
    remained in nine docs/<locale>/README.md copies. Align those quick-start
    and self-hosted install blocks so /plugin install ecc@ecc resolves the
    ecc marketplace instead of everything-claude-code.
  • fix: refresh stale technical content in agents, rules, and skills (#2168)
    Several published examples contained APIs that no longer exist, code that
    does not run, or model versions that drifted from reality:
    
    - agents/performance-optimizer.md used the web-vitals v3 API
      (getCLS/getFID/getLCP/getFCP/getTTFB) and reported FID. web-vitals v4
      renamed the imports to onCLS/onINP/onLCP/onFCP/onTTFB and FID was
      replaced by INP (target < 200ms)
    - rules/common/performance.md pinned stale model versions in the
      model-selection guidance; refresh to the versions the repo itself uses
      (agent.yaml pins claude-opus-4-6) and add the PowerShell variant for
      MAX_THINKING_TOKENS next to the bash export
    - skills/python-patterns/SKILL.md: both get_value examples referenced
      default_value without declaring the parameter (NameError); add
      default_value: Any = None to the EAFP and LBYL signatures
    - skills/frontend-patterns/SKILL.md: the custom useQuery example rebuilt
      refetch whenever callers passed inline fetchers/options, re-triggering
      the effect after every state update (infinite fetch loop). Keep the
      latest fetcher/options in refs so refetch stays referentially stable.
      The PASS-labelled useMemo example mutated its input with in-place sort;
      copy before sorting
    - skills/coding-standards/SKILL.md repeated the same PASS-labelled
      in-place-sort-in-useMemo example; same fix
    - rules/typescript/security.md used a vendor-specific OPENAI_API_KEY in
      generic guidance; switch to a neutral API_KEY
    
    Every hand-maintained copy of the affected content is synced in the same
    change: locale mirrors (ja-JP, ko-KR, pt-BR, tr, zh-CN, zh-TW - each only
    where it carries the affected file) and the .agents/.kiro/.cursor harness
    mirrors. Two structural divergences are left alone and noted here:
    .kiro/steering/performance.md has no extended-thinking control list to
    carry the PowerShell variant, and docs/zh-TW/rules/performance.md keeps an
    older condensed thinking section without the budget-cap line.
    rules/zh/performance.md is intentionally untouched - the rules/zh tree is
    being retired in a separate change
  • docs: align command docs with shipped behavior (#2169)
    - multi-{plan,execute,backend,frontend,workflow}.md: add an in-file
      prerequisite note for the external ccg-workflow runtime. README.md already
      warns these commands need codeagent-wrapper and the .ccg prompt tree, but
      users meeting them via the installed slash commands never see the README;
      the commands-core module still installs all five by default
    - quality-gate.md: describe what scripts/hooks/quality-gate.js actually does.
      The doc advertised '/quality-gate [path] [--fix] [--strict]' with lint/type
      checks, but the script reads the file path from hook stdin JSON, toggles
      behavior via ECC_QUALITY_GATE_FIX / ECC_QUALITY_GATE_STRICT env vars, and
      runs formatters only (Biome/Prettier, gofmt, ruff format)
    - claude-devfleet SKILL.md: add a Setup section pointing at the DevFleet
      server repository (github.com/LEC-AI/claude-devfleet, already disclosed in
      mcp-configs/mcp-servers.json) plus the SECURITY.md port-verification note;
      the skill previously assumed a running instance with no way to obtain one
    - regenerate docs/COMMAND-REGISTRY.json for the quality-gate description
  • fix(skills): keep curl credentials out of argv (#2175)
    * fix(skills): avoid curl credential argv leaks
    
    * test(ci): guard secret curl examples
  • docs(i18n): add German localization scout (#2029)
    Adds de-DE docs, installer wiring, and locale tests. Pre-validated on current main with install manifest checks, markdownlint, locale-install tests, and ECC 2.0 release-surface tests.
  • docs(th): add Thai (th) README translation
    Adds docs/th/README.md with a concise onboarding-style Thai
    translation mirroring the docs/vi-VN format. Updates the language
    switchers in the English, Simplified Chinese, Traditional Chinese,
    Japanese, Korean, Portuguese (BR), Russian, Turkish, Vietnamese,
    and Simplified Chinese docs READMEs to link to the new Thai page.
    
    The English README remains the canonical source of truth; the Thai
    page links back to it for full content.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • fix(ja-JP): translate frontmatter description to Japanese in 3 skills
    - skill-scout: translate description field
    - tinystruct-patterns: translate description field
    - ui-to-vue: translate description field
  • fix(ja-JP): address review feedback and add 5 missing skills
    - Fix Chinese term '提炼' → '蒸留' in commands/rules-distill.md
    - Fix '重大な所見' (Critical→重大) in agents/opensource-sanitizer.md
    - Fix non-transactional persistence in swift-actor-persistence/SKILL.md:
      add rollback logic so cache stays consistent if disk write fails
    - Clarify anti-pattern wording: 'configurable file URL' → 'externally
      mutable after init' to remove internal inconsistency (P2)
    - Fix broken relative link in videodb/reference/api-reference.md:
      ../../../../../skills/... → ./editor.md
    - Add 5 previously missing SKILL.md translations:
      skill-scout, tinystruct-patterns, ui-to-vue, vite-patterns,
      windows-desktop-e2e
  • docs: fix zh-CN parity — add 44 missing files to ja-JP
    Add files present in zh-CN but missing from ja-JP:
    - commands: claw, context-budget, devfleet, docs, projects, prompt-optimize, rules-distill (7 files)
    - skills: regex-vs-llm-structured-text, remotion-video-creation, repo-scan, research-ops,
      returns-reverse-logistics, rules-distill, rust-patterns, rust-testing, skill-comply,
      skill-stocktake, social-graph-ranker, swift-actor-persistence, swift-concurrency-6-2,
      swift-protocol-di-testing, swiftui-patterns, team-builder, terminal-ops, token-budget-advisor,
      ui-demo, unified-notifications-ops, video-editing, videodb (+reference/*), visa-doc-translate,
      workspace-surface-audit, x-api (37 files)
    
    Result: ja-JP now has 517 files vs zh-CN 412 files.
    zh-CN parity: 0 missing files (complete parity achieved).
  • docs: add missing Japanese translations to complete zh-CN parity (ja-JP)
    Add remaining files to match zh-CN documentation structure:
    - hooks/README.md — hooks architecture and customization guide
    - examples/ — 8 project CLAUDE.md templates (general, user, django, go, harmonyos, laravel, rust, saas-nextjs)
    - CHANGELOG.md — version history
    - the-openclaw-guide.md — OpenClaw guide (471 lines)
    
    Total: 11 files, 2362 insertions
    ja-JP now has full parity with zh-CN directory structure.
  • docs: add native Japanese translation of ECC documentation (ja-JP)
    Translate everything-claude-code repository to Japanese including:
    - 17 root documentation files
    - 60 agent documentation files
    - 80 command documentation files
    - 99 rule files across 18 language directories (common, angular, arkts, cpp, csharp, dart, fsharp, golang, java, kotlin, perl, php, python, ruby, rust, swift, typescript, web)
    - 199 skill documentation files
    
    Total: 455 files translated to Japanese with:
    - Consistent terminology glossary applied throughout
    - YAML field names preserved in English (name, description, etc.)
    - Code blocks and examples untouched (comments translated)
    - Markdown structure and relative links preserved
    - Professional translation maintaining technical accuracy
    
    This translation expands ECC accessibility to Japanese-speaking developers and teams.
    
    Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
  • fix: integrate recent hook and docs PRs (#1905)
    Integrates useful changes from #1882, #1884, #1889, #1893, #1898, #1899, and #1903:
    - fix rule install docs to preserve language directories
    - correct Ruby security command examples
    - harden dev-server hook command-substitution parsing
    - add Prisma patterns skill and catalog/package surfaces
    - allow first-time protected config creation while blocking existing configs
    - read cost metrics from Stop hook transcripts
    - emit suggest-compact additionalContext on stdout
    
    Co-authored-by: Jamkris <dltmdgus1412@gmail.com>
    Co-authored-by: Levi-Evan <levishantz@gmail.com>
    Co-authored-by: gaurav0107 <gauravdubey0107@gmail.com>
    Co-authored-by: richm-spp <richard.millar@salarypackagingplus.com.au>
    Co-authored-by: zomia <zomians@outlook.jp>
    Co-authored-by: donghyeun02 <donghyeun02@gmail.com>
  • docs: add prompt defense baselines
    Add compact prompt-defense baselines to active ECC prompt surfaces and copied CLAUDE examples. AgentShield prompt-defense findings are now zero; local tests passed 2366/2366.
  • feat: add Quarkus handling
    Adds Quarkus handling across the Java skill/reviewer surface, with maintainer follow-up fixes for duplicate catalog entries, required skill sections, localized snippet structure, and current main alignment.\n\nValidation run locally on the final PR head:\n- NODE_PATH=/Users/affoon/GitHub/ECC/everything-claude-code/node_modules node scripts/ci/validate-install-manifests.js\n- NODE_PATH=/Users/affoon/GitHub/ECC/everything-claude-code/node_modules node scripts/ci/validate-skills.js\n- NODE_PATH=/Users/affoon/GitHub/ECC/everything-claude-code/node_modules node scripts/ci/catalog.js --text\n- npx --yes markdownlint-cli docs/ECC-2.0-GA-ROADMAP.md\n- git diff --check\n- NODE_PATH=/Users/affoon/GitHub/ECC/everything-claude-code/node_modules node tests/run-all.js (2324 passed, 0 failed)
  • docs: salvage Vietnamese README entry
    - add a current Vietnamese onboarding README adapted from stale community PR #1322
    
    - link Vietnamese from the existing localized README language selectors
    
    - keep stale full translation content out of tree while preserving useful contributor work
  • docs(strategic-compact): fix hook command path in zh-CN/zh-TW/ja-JP SKILL.md (#1701)
    Extends the hook command path correction from PR #1682 (English source) to
    the zh-CN, zh-TW, and ja-JP translated mirrors so the PreToolUse hook
    example matches the actual script location at
    ~/.claude/scripts/hooks/suggest-compact.js.
    
    Changes per locale:
    
    - docs/zh-CN/skills/strategic-compact/SKILL.md: update both command strings
      from ~/.claude/skills/strategic-compact/suggest-compact.js to
      ~/.claude/scripts/hooks/suggest-compact.js.
    
    - docs/zh-TW/skills/strategic-compact/SKILL.md: replace the outdated
      suggest-compact.sh reference (the .sh variant was removed in merged PR
      #41) with the current node-invoked suggest-compact.js, and align the
      matcher block structure with the English canonical SKILL.md post-#1682.
    
    - docs/ja-JP/skills/strategic-compact/SKILL.md: same .sh -> .js migration
      and matcher alignment as zh-TW.
    
    The ko-KR mirror already uses the correct CLAUDE_PLUGIN_ROOT-based hook
    path and needs no change.
    
    Refs #1675
  • docs(ja-JP): translate plain text code blocks to Japanese
    Translate English prose inside plain text code blocks (```text, ```)
    across ja-JP documentation to Japanese, following the same approach
    as PR #753 (zh-CN translation).
    
    Translated content includes:
    - Output template labels and status messages
    - Folder tree inline comments
    - CLI workflow descriptions
    - Error/warning message examples
    - Commit message templates and PR title examples
    
    Technical identifiers, file paths, and actual code remain untranslated.
  • fix(commands): make ace-tool MCP optional in multi-* commands with built-in fallbacks
    The multi-* commands (multi-plan, multi-execute, multi-workflow, multi-backend,
    multi-frontend) previously required ace-tool MCP (Augment Code) which is a paid
    service. This change makes ace-tool completely optional by:
    
    - Changing "MUST call" to "If ace-tool MCP is available" for enhance_prompt
    - Changing mandatory search_context calls to optional with fallback procedures
    - Adding detailed fallback instructions using Claude Code built-in tools
      (Glob, Grep, Read, Task/Explore agent) when ace-tool is unavailable
    - Updating all translations (ja-JP, zh-CN) to match
    
    This ensures multi-* commands work out of the box without ace-tool MCP configured.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
  • fix(docs): use namespaced /everything-claude-code:plan in README examples
    When installed as a plugin, /plan triggers Claude Code's built-in plan
    mode instead of the plugin's plan skill. Updated all 4 README files
    (EN, zh-CN, zh-TW, ja-JP) to show the plugin-namespaced form with a
    comment noting the shorter form works for manual installs.
    
    Also fixes markdownlint MD012 violation in chief-of-staff.md (trailing
    double blank line from #280 merge).
    
    Fixes #297