mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-16 21:25:42 +02:00
Merge upstream/main into feat/gateguard-fewer-round-trips
Brings in the three commits main gained since the branch's merge base: the 2.2.3 release, retiring the Everything Claude Code name for ECC, and the ja-JP sponsor update. 227 files arrive from main; two conflicted. CHANGELOG.md: the branch had added an Unreleased section and main a released 2.2.3 section, both at the top. Both are kept verbatim with Unreleased above 2.2.3, since none of the branch's entries shipped in that release. manifests/context-packs/skill-triggers@1.json: both sides had recomputed registryDigest from the same earlier value to different results, and neither is the digest of the merged tree. It is recomputed with loadContextRegistry over the merged tree and only that field changes; triggers and triggersDigest are untouched on both sides. validate-context-profiles passes. All twelve CI validators pass. The full suite reports 44 failures in seven files; 43 of them fail by name and count identically on an unmodified upstream/main, and the remaining one, plugin-hook-bootstrap, fails only inside run-all and passes in isolation on both trees. The merge introduces no failing test that main does not already have.
This commit is contained in:
@@ -133,6 +133,7 @@ function determineInstallCwd(record, repoRoot) {
|
||||
// install-apply.js if its package.json identifies it as ECC — otherwise a
|
||||
// cloned project that ships a nested `evil/{package.json,scripts/install-apply.js}`
|
||||
// could drive auto-update into executing attacker code (GHSA-hfpv-w6mp-5g95).
|
||||
// 'everything-claude-code' is the legacy 1.x package name, kept for existing checkouts.
|
||||
const ECC_PACKAGE_NAMES = new Set(['ecc-universal', 'everything-claude-code']);
|
||||
|
||||
function validateRepoRoot(repoRoot) {
|
||||
|
||||
@@ -172,7 +172,7 @@ const descChars = skillDescriptions.reduce((n, d) => n + d.length, 0);
|
||||
|
||||
fs.writeFileSync(path.join(tmpDir, 'README.md'), `# ecc-pi-core
|
||||
|
||||
A curated, Pi-native profile of ECC (Everything Claude Code): ${skillCount} portable
|
||||
A curated, Pi-native profile of ECC: ${skillCount} portable
|
||||
engineering skills and ${commandCount} pure prompt-workflow commands, with no extensions,
|
||||
no hooks, no runtime downloads, and no network or SaaS dependencies.
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* NanoClaw v2 — Barebones Agent REPL for Everything Claude Code
|
||||
* NanoClaw v2 — Barebones Agent REPL for ECC
|
||||
*
|
||||
* Zero external dependencies. Session-aware REPL around `claude -p`.
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* scripts/codemaps/generate.ts
|
||||
*
|
||||
* Codemap Generator for everything-claude-code (ECC)
|
||||
* Codemap Generator for ECC
|
||||
*
|
||||
* Scans the current working directory and generates architectural
|
||||
* codemap documentation under docs/CODEMAPS/ as specified by the
|
||||
|
||||
@@ -81,7 +81,9 @@ require_file "$CONFIG_FILE" "Global config.toml"
|
||||
require_file "$AGENTS_FILE" "Global AGENTS.md"
|
||||
|
||||
if [[ -f "$AGENTS_FILE" ]]; then
|
||||
if search_file '^# Everything Claude Code \(ECC\)' "$AGENTS_FILE"; then
|
||||
# Accept the current "# ECC" heading and the legacy expanded-name heading
|
||||
# that older syncs wrote into existing ~/.codex/AGENTS.md files.
|
||||
if search_file '^# (ECC|Everything Claude Code \(ECC\))( |$)' "$AGENTS_FILE"; then
|
||||
ok "AGENTS contains ECC root instructions"
|
||||
else
|
||||
fail "AGENTS missing ECC root instructions"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// Slash commands: /ecc /help /skill /docs /release
|
||||
//
|
||||
// Env: DISCORD_BOT_TOKEN (required), DISCORD_APP_ID (required),
|
||||
// ECC_REPO (path to local clone, default ~/GitHub/ECC/everything-claude-code),
|
||||
// ECC_REPO (path to local clone, default ~/GitHub/ECC),
|
||||
// DISCORD_INVITE (optional, shown in /ecc)
|
||||
//
|
||||
// Crash-only design: any gateway close, error, or missed heartbeat ack exits
|
||||
@@ -21,7 +21,12 @@ if (!TOKEN || !APP_ID) {
|
||||
console.error('missing DISCORD_BOT_TOKEN / DISCORD_APP_ID');
|
||||
process.exit(1);
|
||||
}
|
||||
const REPO = process.env.ECC_REPO || join(homedir(), 'GitHub/ECC/everything-claude-code');
|
||||
// Prefer ~/GitHub/ECC. The nested legacy checkout path is still accepted so
|
||||
// existing hosts keep working without setting ECC_REPO.
|
||||
const REPO = process.env.ECC_REPO || [
|
||||
join(homedir(), 'GitHub/ECC'),
|
||||
join(homedir(), 'GitHub/ECC/everything-claude-code'),
|
||||
].find(dir => existsSync(join(dir, 'package.json'))) || join(homedir(), 'GitHub/ECC');
|
||||
const REPO_URL = 'https://github.com/affaan-m/ECC';
|
||||
const INVITE = process.env.DISCORD_INVITE || '';
|
||||
const API = 'https://discord.com/api/v10';
|
||||
@@ -133,12 +138,12 @@ const HELP = [
|
||||
|
||||
const handlers = {
|
||||
ecc: () => [
|
||||
'**Everything Claude Code (ECC)** — the agent harness performance system.',
|
||||
'**ECC** — the agent harness performance system.',
|
||||
'Skills, agents, rules, hooks, MCP conventions, and operator workflows that move across Claude Code, Codex, OpenCode, Cursor, Gemini, and Zed.',
|
||||
'',
|
||||
`- repo: ${REPO_URL}`,
|
||||
'- site: https://ecc.tools',
|
||||
`- install: \`/plugin marketplace add affaan-m/everything-claude-code\` then \`/plugin install ecc\``,
|
||||
`- install: \`/plugin marketplace add affaan-m/ECC\` then \`/plugin install ecc\``,
|
||||
INVITE ? `- invite a friend: ${INVITE}` : '',
|
||||
].filter(Boolean).join('\n'),
|
||||
|
||||
|
||||
@@ -216,7 +216,8 @@ function hasFileWithExtension(rootDir, relativeDir, extensions) {
|
||||
|
||||
function detectTargetMode(rootDir) {
|
||||
const packageJson = safeParseJson(safeRead(rootDir, 'package.json'));
|
||||
if (packageJson?.name === 'everything-claude-code') {
|
||||
// 'everything-claude-code' is the legacy package name, kept for older checkouts.
|
||||
if (['ecc-universal', 'everything-claude-code'].includes(packageJson?.name)) {
|
||||
return 'repo';
|
||||
}
|
||||
|
||||
@@ -232,6 +233,8 @@ function detectTargetMode(rootDir) {
|
||||
return 'consumer';
|
||||
}
|
||||
|
||||
// The everything-claude-code entries below are legacy install ids, kept so
|
||||
// existing 1.x installs are still detected.
|
||||
const ECC_PLUGIN_KEY_PATTERNS = [
|
||||
/^ecc@/i,
|
||||
/^everything-claude-code@/i,
|
||||
@@ -831,7 +834,7 @@ function getConsumerChecks(rootDir) {
|
||||
points: 4,
|
||||
scopes: ['repo'],
|
||||
path: '~/.claude/plugins/ecc/ (legacy everything-claude-code paths also supported)',
|
||||
description: 'Everything Claude Code is installed for the active user or project',
|
||||
description: 'ECC is installed for the active user or project',
|
||||
pass: Boolean(pluginInstall),
|
||||
fix: 'Install the ECC plugin for this user or project before auditing project-specific harness quality.',
|
||||
},
|
||||
|
||||
@@ -722,7 +722,7 @@ async function main() {
|
||||
// compaction resume the model would re-run /fw-task-new (or any
|
||||
// ARGUMENTS-bearing slash skill) with the last ARGUMENTS it saw,
|
||||
// duplicating issues/branches/Notion tasks. Tracking upstream at
|
||||
// https://github.com/affaan-m/everything-claude-code/issues/1534
|
||||
// https://github.com/affaan-m/ECC/issues/1534
|
||||
const guarded = [
|
||||
'HISTORICAL REFERENCE ONLY — NOT LIVE INSTRUCTIONS.',
|
||||
'The block below is a frozen summary of a PRIOR conversation that',
|
||||
|
||||
@@ -97,6 +97,7 @@ function parsePluginList(stdout) {
|
||||
plugin.id === CURRENT_PLUGIN_ID
|
||||
|| String(plugin.id || '').startsWith('ecc@')
|
||||
|| LEGACY_PLUGIN_IDS.has(plugin.id)
|
||||
// Legacy install id prefix, kept for existing installs.
|
||||
|| String(plugin.id || '').startsWith('everything-claude-code@')
|
||||
);
|
||||
if (!isRelevant) continue;
|
||||
@@ -400,6 +401,7 @@ function currentEccPlugins(plugins) {
|
||||
function assertNoConflictingEccPlugins(plugins) {
|
||||
const legacy = plugins.find(plugin => (
|
||||
LEGACY_PLUGIN_IDS.has(plugin?.id)
|
||||
// Legacy install id prefix, kept for existing installs.
|
||||
|| String(plugin?.id || '').startsWith('everything-claude-code@')
|
||||
));
|
||||
if (legacy) {
|
||||
|
||||
@@ -6,6 +6,7 @@ const path = require('path');
|
||||
const { isWithinRoot, realpathNearestExisting } = require('../path-safety');
|
||||
|
||||
const CURRENT_PLUGIN_ID = 'ecc@ecc';
|
||||
// Legacy plugin ids, kept so existing installs are still recognized.
|
||||
const LEGACY_PLUGIN_IDS = new Set([
|
||||
'everything-claude-code@everything-claude-code',
|
||||
'everything-claude-code@ecc',
|
||||
@@ -49,6 +50,7 @@ function findManualClaudePlugin(options = {}) {
|
||||
['ecc', 'plugin.json'],
|
||||
['ecc@ecc', '.claude-plugin', 'plugin.json'],
|
||||
['ecc@ecc', 'plugin.json'],
|
||||
// Legacy install dir, kept for existing installs.
|
||||
['everything-claude-code', '.claude-plugin', 'plugin.json'],
|
||||
['everything-claude-code', 'plugin.json'],
|
||||
];
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* ranking degrades to confidence-only (unchanged behaviour).
|
||||
*
|
||||
* Resolves part (b) of:
|
||||
* https://github.com/affaan-m/everything-claude-code/issues/2371
|
||||
* https://github.com/affaan-m/ECC/issues/2371
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Cross-platform (Windows, macOS, Linux) project type detection
|
||||
* by inspecting files in the working directory.
|
||||
*
|
||||
* Resolves: https://github.com/affaan-m/everything-claude-code/issues/293
|
||||
* Resolves: https://github.com/affaan-m/ECC/issues/293
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
@@ -5,6 +5,7 @@ const path = require('path');
|
||||
const os = require('os');
|
||||
|
||||
const CURRENT_PLUGIN_SLUG = 'ecc';
|
||||
// Legacy install id, kept for existing installs.
|
||||
const LEGACY_PLUGIN_SLUG = 'everything-claude-code';
|
||||
const CURRENT_PLUGIN_HANDLE = `${CURRENT_PLUGIN_SLUG}@${CURRENT_PLUGIN_SLUG}`;
|
||||
const LEGACY_PLUGIN_HANDLE = `${LEGACY_PLUGIN_SLUG}@${LEGACY_PLUGIN_SLUG}`;
|
||||
|
||||
@@ -167,7 +167,7 @@ ${chalk.yellow('4.')} Evolve into skills: ${chalk.cyan('/evolve')}
|
||||
|
||||
footer() {
|
||||
console.log(chalk.gray('─'.repeat(60)));
|
||||
console.log(chalk.dim(` Powered by Everything Claude Code • ecc.tools`));
|
||||
console.log(chalk.dim(` Powered by ECC • ecc.tools`));
|
||||
console.log(chalk.dim(` GitHub App: github.com/apps/skill-creator`));
|
||||
console.log('\n');
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
# Sync Everything Claude Code (ECC) assets into a local Codex CLI setup.
|
||||
# Sync ECC assets into a local Codex CLI setup.
|
||||
# - Backs up ~/.codex config and AGENTS.md
|
||||
# - Merges ECC AGENTS.md into existing AGENTS.md (marker-based, preserves user content)
|
||||
# - Generates prompt files from commands/*.md
|
||||
|
||||
Reference in New Issue
Block a user