Commit Graph
355 Commits
Author SHA1 Message Date
haelyraandGitHub 9599b90f6b docs: gate guided setup until 2.2 release (#2767)
* docs: gate guided install until 2.2 release

* docs: lead README with Claude plugin install

* docs: move 2.2 package commands below install options
2026-08-11 12:22:55 -04:00
e990c0c7ed feat(skills): add dev-team skill — multi-persona collaborative session (#2309)
* feat(skills): add dev-team skill — multi-persona collaborative session

Adds skills/dev-team/SKILL.md, a community skill inspired by the
BMAD Method's "party mode": PM, Architect, Developer, and QA respond
to the same topic in parallel, then a synthesis step names tensions
explicitly instead of averaging them.

Reads PROJECT-CONTEXT.md from the repo root when present, and offers
to generate it when missing, folding in the closed project-context
skill's (#2310) generation workflow per affaan-m's review — that
skill's premise (every agent reads the file) wasn't implemented
anywhere, so the capability now lives directly in the one skill that
actually reads it.

Rebuilt on current upstream/main as a skill-only diff: the shared
format-code.ts Windows fix and github-coordination branch-coverage
tests that were previously bundled here (and duplicated across the
story-lifecycle and project-context sibling PRs) now live in #2459.

* fix(manifests): register dev-team skill in workflow-quality install module

* fix(docs): repair README lint errors and Windows hook-install path regression

Fixes CI inherited from the README 2.1 restructure (19b05476):
- MD058: blank lines around tables (delegation map, Codex role configs)
- MD001: Option A/B headings under Ecosystem Tools h2 jump to h4
- MD024: duplicate 'What's included' headings (Codex, Copilot sections)
- restore %USERPROFILE%\\.claude escaping required by
  tests/scripts/manual-hook-install-docs.test.js

* feat(skills): address review — trust boundary, harness-neutral I/O, contract test

Address maintainer review on #2309:
- untrusted-context boundary now travels with every persona prompt:
  inline label on the context section, personas marked analysis-only
  with no state-changing tool use
- personas receive a bounded declarative summary (≤150 words, fixed
  fields, secrets and imperative content stripped) — never the raw
  PROJECT-CONTEXT.md
- context loading uses harness-native file tools; POSIX-only
  'test -f && cat' removed
- all references resolve on main: story-lifecycle follow-up replaced
  with /plan and epic-* commands, ecc:plan-prd corrected to the
  /plan-prd command; boundary vs team-builder and council made explicit
- added tests/docs/dev-team-skill.test.js contract test (roles,
  parallel dispatch, synthesis guardrails, trust boundary, registration)

* docs: refresh Turkish skill count

* ci: retrigger checks (flaky stop-hooks-stdout timeout on macos node20 npm cell)

---------

Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-08-11 12:17:03 -04:00
0e0df5a6e7 feat(agents): add rag-pipeline-reviewer agent (#2446)
* feat(agents): add rag-pipeline-reviewer agent

* fix: correct model field syntax

* fix: address review feedback - add prompt defense baseline, fix context_recall gap, register in AGENTS.md

* chore: update agent count to 68, add trailing newline

* chore: fix agent count consistency in project structure section

* fix: sync Turkish agent catalog count

---------

Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-08-10 22:08:48 -04:00
5987bd4dc6 feat(session-start): rank injected instincts by project/stack relevance (#2466)
* feat(session-start): rank injected instincts by project/stack relevance

Instinct selection at SessionStart ranked purely by confidence, so a
high-confidence instinct about an unrelated stack could take an injection
slot from a lower-confidence instinct that is actually relevant to the
current project.

Rank by confidence + location/stack relevance instead: project-scoped
instincts, and instincts whose domain/trigger matches the detected stack
(languages/frameworks via detectProjectType, plus terraform/dbt markers),
get a small additive boost. The confidence>=threshold floor and the
injection cap are unchanged, and ranking degrades to confidence-only when
nothing matches or when ECC_INSTINCT_RELEVANCE_RANKING is set to off.

The ranking helpers live in scripts/lib/instinct-relevance.js with unit
coverage in tests/lib/, plus an end-to-end ordering test in tests/hooks/.

Completes part (b) of #2371; part (a) (configurable count + threshold)
shipped in #2413.

Fixes #2371

* refactor(session-start): drop redundant confidence tiebreaker in instinct sort

Greptile flagged that the secondary `right.confidence` comparison in
summarizeActiveInstincts' sort was dead code when relevance ranking is
disabled and, when enabled, was reached only on a floating-point tie of the
combined score — where it skipped the intended scope-label tiebreaker.

Remove it: the primary combined-score comparison already reduces to
confidence-only ordering when relevance is off, so behavior there is
unchanged; a genuine combined-score tie now falls through to the documented
scope-first, then id, order.

* test: isolate instinct relevance environment

---------

Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-08-10 21:46:24 -04:00
Seekers2001andGitHub bed96afa42 Add living-docs-governance skill (maintain-phase project doc system) (#2277)
* feat: add living-docs-governance skill (maintain-phase project doc system)

Rebased onto latest main to resolve the merge conflict (the branch had gone
DIRTY as main advanced). Trimmed to just the skill file (no top-level
README/AGENTS edits), mirroring the merged #2381. Previously approved by
@powershello before this rebase.

* fix: register living-docs-governance install path

* docs: sync skill catalog count

* fix: publish living-docs-governance skill

* fix: adopt existing docs before adding governance files
2026-08-10 17:10:01 -04:00
Affaan MustafaandGitHub 9de131420b fix(ito-compute): complete device auth lifecycle (#2706) 2026-08-07 14:53:13 -04:00
Affaan MustafaandGitHub f16a6ff2a6 fix: ship new Itô skills through install manifests (#2704)
* fix: ship new Ito skills through install manifests

* ci: audit shipped dependencies separately from tooling

* test(release): pass previous version to heading helper
2026-08-07 14:14:21 -04:00
52a3babd5d feat(skills): add secure terminal opener (#2650)
* test(skills): define terminal opener contract

* feat(skills): add secure terminal opener

* fix(skills): report detached terminal errors

* docs: sync terminal opener skill count

* fix(security): require explicit terminal launch

* test(skills): cover terminal opener review findings

* fix(skills): bound terminal launch waits

* test(skills): cover terminal fallback output

* fix(skills): report terminal mux fallback

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 17:24:34 -04:00
28e53a0bc1 feat(install): add guided multi-harness installer (#2649)
* feat(install): add guided Claude plugin setup

* fix: support Claude command shims on Windows

* feat: support safe Claude plugin scope migration

* fix(install): preserve interactive setup terminal

* fix(install): auto-migrate setup scope changes

* feat(install): add guided multi-harness installer

* fix(install): sync Yarn binary metadata

* fix(install): handle wizard EOF on Node 18

* ci: allow installer matrix tests to finish

* test(install): allow slower PowerShell delegation

* fix(install): harden guided provider reconciliation

* test(install): harden packaged and local compatibility

* chore: prepare guided installer release 2.2.0

* fix(install): report refreshed Codex marketplace state

* fix(install): verify managed content provenance

* test(install): allow empty Yarn smoke fixture

* test(install): invoke Windows package shims safely

* fix(install): close cross-platform release gaps

* fix(install): require trusted GitHub origins

* fix(install): preserve hook profile precedence

* refactor(install): centralize trusted GitHub origins

* ci: retrigger workflow run after merge of main

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 15:39:49 -04:00
Affaan MustafaandGitHub 623f2c020f Add bounded harness evaluation and rollback loop (#2686)
* feat(ecc2): add bounded harness evaluation loop

* fix(ecc2): preserve harness evidence and legacy IDs
2026-08-05 18:17:10 -04:00
haelyraandGitHub f1fec0e539 feat: add retention feedback loop and honest support matrix (#2681)
* feat: add retention feedback loop

* test: retire obsolete README parity row guard

* fix: harden public feedback guidance

* fix: let feedback CLI output flush

* test: keep feedback help coverage focused
2026-08-04 21:42:25 -04:00
haelyraandGitHub e4e4163101 fix(docs): restore main CI (#2623) 2026-07-29 14:11:01 -04:00
Affaan MustafaandClaude 4e973d3eaf docs: drop badges whose api.ecc.tools endpoints do not exist yet
claude-plugin, codex-plugin, and clones return 404 and would render as
broken shields on the repo homepage. Re-add when the endpoints ship.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149VwNuynam6rvEfcMmiHHa
2026-07-27 16:45:17 -04:00
Affaan MustafaandClaude 19b05476fd docs: blend 2.1 README restructure with retained sections per Affaan x Haley thread
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1b2jD5gWaPTnHWQ51V7oj
2026-07-27 16:41:57 -04:00
Affaan MustafaandGitHub b40f11919a fix old project name delimiter 2026-07-27 13:00:46 -07:00
haelyraandGitHub 86c786e8bb Update section title from 'Why It Feels Different' to 'Why Choose ECC?' 2026-07-27 15:25:33 -04:00
haelyra b6f461a363 docs: add README install jump link 2026-07-27 15:23:38 -04:00
haelyraandGitHub 55c343571b Revise TDD section title and format
Updated section title for clarity and corrected formatting.
2026-07-27 15:20:07 -04:00
haelyraandGitHub 41441427b9 docs: refresh README for ECC 2.1 (#2579)
Refresh the main README for ECC 2.1, including the Plan Canvas demo, install paths, harness guidance, security, sponsors, and community sections.
2026-07-27 15:17:36 -04:00
Affaan Mustafa 6f452d48d2 chore: bump plugin version to 2.1.0 2026-07-27 14:05:24 -04:00
Affaan MustafaandGitHub 6a9f075cd9 fix: use scalar Claude agent tools (#2583)
Normalize scalar Claude agent tool metadata across validators, adapters, dashboards, and generated surfaces with regression coverage.
2026-07-26 03:20:15 -07:00
Affaan MustafaandGitHub f3afd59045 fix: flatten Claude skill installs (#2582)
Flatten managed Claude skill destinations, preserve user-owned conflicts, and migrate legacy nested installs through the lifecycle tooling.
2026-07-26 03:20:06 -07:00
Affaan MustafaandGitHub 4d0b501b05 feat: add cross-harness memory vault (#2581)
Add a local-first, cross-harness memory vault with CLI and MCP surfaces, bounded search and storage, harness-scoped visibility, setup guidance, and comprehensive tests.
2026-07-26 02:46:59 -07:00
Seekers2001andGitHub ad8db87780 feat(skills): add contract-first collaboration workflow (#2567)
Add a contract-first workflow for consumer/provider collaboration, including shared artifact authority, compatibility review, generated-type and runtime verification, and safe handling of contract-driven tooling.
2026-07-26 00:05:22 -07:00
Affaan MustafaandGitHub ac30ff3ea2 Use supplied Itō PNG logo (#2570)
Replace the generated Itō SVG wordmark with the supplied transparent monogram assets, keep the exact white-and-gold mark for dark mode, add a same-geometry light-mode variant, and refresh the dependency lock entry flagged by CI.
2026-07-24 17:40:49 -07:00
Affaan Mustafa 751874fef9 Center README entry cards 2026-07-24 16:26:50 -04:00
Affaan Mustafa cf1fb0125e Fix README asset alignment 2026-07-24 11:52:30 -04:00
Affaan Mustafa 05a7695bc0 docs: align ECC entrypoints and Kimi setup 2026-07-24 03:58:50 -04:00
Affaan MustafaandGitHub e625a07736 docs: compact the sponsor logo row (#2565) 2026-07-23 23:44:42 -07:00
Affaan MustafaandGitHub 33c7dbb7d6 feat(ito): expose guarded live node qualification
Expose the canonical Itō CLI's pinned sixtytwo node-qualification path through ECC with double opt-in, explicit node/config gates, credential isolation, and no new MCP or execution authority.

Validated across the full Linux, macOS, and Windows Node/package-manager matrix, hosted coverage, CodeQL, security, lint, and focused bridge tests.
2026-07-23 22:10:57 -07:00
Affaan MustafaandGitHub 7dc2c116e7 docs: restore sponsor contract after mainline merge (#2560)
* fix sponsor contract after mainline merge

* refine sponsor assets and placement

* tighten sponsor asset contract
2026-07-23 20:44:09 -07:00
6a2e09137c docs(sponsors): consistent sponsor treatment, Itô + Moonshot AI (Kimi) public + Atlas Cloud (#2553)
* docs: add Itô Markets GPU compute sponsor section to README

Adds a GPU compute sponsor entry under the Sponsors section: Itô Markets
logo linking itomarkets.com plus the compute dashboard at
compute.itomarkets.com, matching the framing from the merged sponsor
routing (4e341183, 8eb43383). Includes a hidden HTML-comment placeholder
for Moonshot AI (Kimi), pending countersign; nothing renders publicly
for Moonshot yet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149VwNuynam6rvEfcMmiHHa

* docs(sponsors): consistent sponsor treatment, Moonshot public, real brand assets

- Replace cropped ito.svg with the full Drive lockup; add ito-dark.svg
  (white marks) with picture/source theme switching for dark mode
- Add Moonshot AI (Kimi) as a public business sponsor: logo in the top
  sponsors table, SPONSORS.md row, placeholder comment removed
- Swap atlascloud.png for the official atlascloud.svg wordmark; add
  dark-theme variants for Atlas Cloud and Moonshot
- Rewrite the bottom Sponsors section: one consistent list, no
  Ito-only subsection or stray horizontal rule
- Point the self-host/gateway FAQ at the ito-compute skill for
  fixed-rate GPU blocks (npm CLI marked coming soon, not yet published)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149VwNuynam6rvEfcMmiHHa

* docs: drop em dash from sponsor FAQ line

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149VwNuynam6rvEfcMmiHHa

* docs(sponsors): Itô is a Partner, Moonshot AI (Kimi) are Open Source Friends

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149VwNuynam6rvEfcMmiHHa

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 19:34:55 -07:00
Affaan MustafaandGitHub bc774282e6 feat: connect ECC to canonical Ito compute CLI (#2558) 2026-07-23 19:28:55 -07:00
Affaan MustafaandGitHub 9d54ee222d Correct README formatting and update sponsor information
Fixed formatting issue in the language section and removed redundant text
2026-07-23 18:27:19 -07:00
a3130f9ebf feat(codex): add ECC navigation guide (#2525)
* feat(codex): add ECC navigation guide

* fix(codex): ship navigation guide references

---------

Co-authored-by: Haley Chen <2022hachen@gmail.com>
2026-07-22 20:44:37 -04:00
Affaan MustafaandGitHub 96789caaf9 feat: add Itô compute sponsor routing and Phase 2 plan (#2546)
* feat: add Ito compute sponsor routing

* fix: harden Ito integration CI and framing
2026-07-22 03:07:45 -04:00
a511395613 feat: Plan Canvas, a browser review canvas for plans (#2467)
* feat: add Plan Canvas - browser annotate-and-approve review for plan artifacts

- scripts/plan-canvas.js CLI (open/await/end/stop/server; bin ecc-plan-canvas)
- loopback server + ECC-styled chrome + annotation SDK + zero-dep markdown renderer
- Approve/Request-changes verdicts wired to the /plan confirmation gate
- plan-canvas skill, /plan-canvas command, SessionStart hook surfacing open reviews
- shared scripts/lib/loopback-guard.js extracted from control-pane (API re-exported)
- 121 new tests incl. full-workflow E2E; registered in manifests, catalog, registry

Inspired by lavish-axi (https://github.com/kunchenguid/lavish-axi) by @kunchenguid;
original ECC-native implementation, not a port.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(plan-canvas): invoke via ecc-plan-canvas bin so the skill works from any project

Skill/command referenced a cwd-relative `node scripts/plan-canvas.js`, unusable
outside the ECC root. Switch to the ecc-plan-canvas bin (and $CLAUDE_PLUGIN_ROOT
fallback) and align CLI next_step hints so an agent can run it as a skill in any repo.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(plan-canvas): render Mermaid diagrams + ship Codex cross-harness surface

- markdown renderer emits <pre class="mermaid"> for ```mermaid blocks (source
  entity-escaped so the browser decodes it for the renderer while blocking injection)
- artifact template loads a pinned Mermaid build only when a diagram is present,
  themed to ECC dark, securityLevel strict, graceful offline fallback to source
  (ECC_PLAN_CANVAS_MERMAID_URL overrides for a local mirror)
- skill teaches Mermaid-for-diagrams and states the CLI+JSON loop is harness-agnostic
- add .agents/skills/plan-canvas (Codex) with agents/openai.yaml interface manifest
- register in install-modules workflow-quality paths; docs updated

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(plan-canvas): add demo screenshot

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(ci): sync yarn.lock with new bin; add contributor checklist

- yarn.lock records the ecc-plan-canvas bin so Yarn hardened-mode install no
  longer wants to modify the lockfile on public PRs
- PR template + CONTRIBUTING gain a pre-push checklist covering the lockfile
  trap and the full skill/command/CLI registration surfaces

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Haley Chen <2022hachen@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:12:48 -04:00
Gaurav DubeyandGitHub ff4a06dd91 feat(session-start): make instinct injection count and confidence threshold configurable (#2413)
* feat(session-start): make instinct injection count and confidence threshold configurable

Expose ECC_MAX_INJECTED_INSTINCTS and ECC_INSTINCT_CONFIDENCE_THRESHOLD so
operators can tune SessionStart instinct injection without editing source.
Defaults are unchanged (6 instincts, 0.7 confidence floor).

The two previously hardcoded constants become DEFAULT_-prefixed fallbacks,
resolved through getMaxInjectedInstincts() and getInstinctConfidenceThreshold(),
mirroring the existing getSessionRetentionDays() /
getSessionStartMaxContextChars() env-override pattern already in this file.
Invalid or out-of-range values fall back to the defaults.

Adds subprocess coverage in tests/hooks/hooks.test.js and documents both
variables in the README Hook Runtime Controls section.

Implements part (a) of #2371.

* fix(session-start): reject partial env values for instinct injection knobs

Parse ECC_MAX_INJECTED_INSTINCTS and ECC_INSTINCT_CONFIDENCE_THRESHOLD with
Number() (after trim) instead of parseInt/parseFloat, so malformed values
like "3.9", "6abc", or "0.7x" fall back to the default rather than silently
accepting the numeric prefix (parseInt("3.9")=3, parseFloat("0.7x")=0.7).
Adds a regression assertion that a non-integer count falls back to 6.

* fix(session-start): validate decimal grammar for instinct injection env vars

Number() still accepts non-decimal numeric syntax, so
ECC_INSTINCT_CONFIDENCE_THRESHOLD=0x1 resolved to 1 and
ECC_MAX_INJECTED_INSTINCTS=1e2 to 100. Gate each value on a strict format
(/^\d+(\.\d+)?$/ for the 0-1 threshold, /^\d+$/ for the positive-integer
count) before converting, so hex/exponent/partial values fall back to the
default. Adds regression assertions for 1e2 and 0x1.
2026-07-03 20:40:17 -07:00
JongHyeok ParkGitHubAffaan Mustafadevin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>affaanBoube
914a58a716 feat(workflows): re-land orch-review workflow + add /orch-review command (#2400)
* feat(workflows): re-land orch-review workflow + add /orch-review command

Re-lands #2363 (reverted by #2393 to unbreak main's lint) and fixes the
root cause so it stays green:

- Restore workflows/orch-review.workflow.js + workflows/README.md.
- eslint.config.js: ignore 'workflows/**/*.workflow.*' and '.claude/workflows/**'
  per the maintainer's note in #2393. Workflow DSL scripts use both top-level
  export (ESM) and top-level return (the runtime wraps them in an async fn),
  which no single eslint sourceType can parse — they must be excluded, not
  lint-fixed. 'npx eslint .' is green with this ignore.
- Add commands/orch-review.md (the /orch-review surface) + regenerate
  docs/COMMAND-REGISTRY.json.

Supersedes #2397 (command-only), which referenced the reverted workflow.

* fix(workflows): address orch-review bot review findings

- Verifier uncertainty no longer demotes blockers (Greptile P1 + CodeRabbit):
  isReal=false only refutes when confidence >= 0.8; low-confidence 'false'
  is treated as uncertain and kept blocking (fail closed).
- Treat the diff (and finding text) as untrusted input in both review and
  verify prompts; ignore embedded directives (prompt-injection hardening).
- Validate changedFiles entries are strings, not just that it is an array.
- Enforce proof for HIGH/CRITICAL in FINDINGS_SCHEMA, not only in the prompt.
- Remove in-place mutation in dimension build + dedup merge (immutable).
- /orch-review: extract & validate a numeric PR id before shelling out to gh.
- Docs: complete the stats example, soften wording, refresh follow-up list.

* style(workflows): apply formatter to orch-review assembly

* fix(plan-orchestrate): detect ecc@ecc marketplace + emit ecc: agent prefix (#2316) (#2409)

* fix(plan-orchestrate): detect ecc@ecc marketplace + emit ecc: agent prefix (#2316)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(ci): resync lockfiles with package.json (eslint 10) + migrate yarn.lock to Yarn 4 format

package.json requires eslint@^10.6.0 but the committed locks pinned 9.39.2, so
npm ci aborted and Yarn 4 hardened mode rejected the stale v1-classic yarn.lock
(YN0028). Regenerate package-lock.json and rewrite yarn.lock in Yarn 4 (berry)
format so npm ci and immutable yarn installs both pass.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(ci): require clean probe exit for Windows shell/bash detection; add pyyaml dev dep

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: affaan <affaan@itomarkets.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: consolidate duplicated hook-root resolver into shared resolveEccRoot() (#2368) (#2410)

* fix(ci): resync lockfiles with package.json (eslint 10) + migrate yarn.lock to Yarn 4 format

package.json requires eslint@^10.6.0 but the committed locks pinned 9.39.2, so
npm ci aborted and Yarn 4 hardened mode rejected the stale v1-classic yarn.lock
(YN0028). Regenerate package-lock.json and rewrite yarn.lock in Yarn 4 (berry)
format so npm ci and immutable yarn installs both pass.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(ci): require clean probe exit for Windows shell/bash detection; add pyyaml dev dep

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: consolidate duplicated hook-root resolver into shared resolveEccRoot() (#2368)

The inline node -e resolver blob was duplicated ~60x across hooks.json,
command docs, and translations. Each copy inlined the full ~700-char
plugin-root search using a spread over nested array literals
(p.join(d,'plugins',...s) over [['ecc'],...]), which breaks Windows hook
execution due to shell quoting (#2368).

Collapse every copy to a 250-char locator that loads the committed
resolve-ecc-root module and delegates to resolveEccRoot() — no spread, no
nested array literals, no escaped double quotes. The real search logic now
lives in one tested module. Also route session-start-bootstrap.js through
resolveEccRoot() instead of its own duplicated reimplementation, and fix
the auto-update.md 'marketplace' (singular) typo along the way.

Guard tests updated: discovery behavior is asserted against resolveEccRoot();
the inline is asserted to delegate and to contain no Windows-fragile
constructs.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(resolve-ecc-root): restore full env-unset discovery in inline resolver

Address Greptile review on #2410: when CLAUDE_PLUGIN_ROOT is unset the
delegating inline could only load the resolver module from ~/.claude,
returning ~/.claude without ever reaching the plugin/cache search. Restore
the old inline's discovery breadth (exact plugin roots + versioned cache)
Windows-safely (no spread, nested arrays, or escaped quotes), then delegate
the authoritative decision to resolveEccRoot(). Add regression tests for
plugin-subdir and versioned-cache bootstrap with env unset.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: affaan <affaan@itomarkets.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: docs/COMMAND-REGISTRY.json check fails on fresh Windows clone (missing .gitattributes) (#2437)

* fix: add .gitattributes to force LF line endings for text files

npm run command-registry:check (part of npm test) fails on a fresh clone
on Windows with the common core.autocrlf=true setting: git checks out
docs/COMMAND-REGISTRY.json with CRLF, but generate-command-registry.js
always writes LF, so the strict string comparison in checkRegistry()
never matches. Forcing LF via .gitattributes makes checkouts consistent
across platforms regardless of a contributor's local autocrlf setting.

* fix: normalize CRLF line endings to LF per .gitattributes

pyproject.toml, src/llm/__init__.py, src/llm/prompt/builder.py,
src/llm/providers/claude.py, and tests/test_builder.py had CRLF line
endings committed to the repo, inconsistent with the rest of the
codebase. Renormalized via 'git add --renormalize .' now that
.gitattributes enforces eol=lf.

---------

Co-authored-by: Affaan Mustafa <me@affaanmustafa.com>

* chore(catalog): sync command counts (92->93) + register orch-review in agent.yaml surface

---------

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: affaan <affaan@itomarkets.com>
Co-authored-by: Boube <109886533+Cb2i@users.noreply.github.com>
Co-authored-by: Affaan Mustafa <me@affaanmustafa.com>
2026-07-03 20:26:40 -07:00
Affaan MustafaandGitHub 81af407619 chore(catalog): sync manifests + fix skill emoji (wave 2) (#2395)
* chore(catalog): sync manifests after skill batch (#2275 #2377 #2378 #2381)

Update skill counts (273 -> 277) across catalog docs after the verified skill batch.

* fix(skills): replace emoji with ASCII in growth-log + loop-design-check

check-unicode-safety (pre-push gate) bans emoji in SKILL.md; the merged #2377
and #2381 slipped through run-all.js. Swap U+274C/U+2705 for 'Avoid:'/'Bad:'/'Good:'.
2026-06-29 19:44:51 -07:00
Affaan MustafaandGitHub be91f21837 chore(catalog): sync manifests after skill batch (#2319 #2288 #2273 #2274 #2338 #2336 #2347 #2348) (#2394)
Regenerate catalog doc counts + command registry after merging the verified
skill/agent batch. Local full suite was green (2924/2924) with these applied.
2026-06-29 18:39:22 -07:00
Affaan Mustafa e2b8a51cea docs(readme): add official-channel icons (Discord/Website/App/Guides) up top
Adds a clean badge row right under the hero linking the official destinations,
led by a live Discord member-count badge (server widget enabled) to drive the
community from a few hundred toward a few thousand. Gives the official ECC links
the icons the readme was missing.
2026-06-20 17:20:02 -04:00
Affaan Mustafa ceca28852e docs: update Atlas Cloud sponsor link 2026-06-17 13:04:17 -04:00
Affaan Mustafa ec92b52847 docs: use Atlas Cloud GitHub sponsor avatar 2026-06-16 17:30:48 -04:00
Affaan Mustafa 76faf6ede6 docs: use Atlas Cloud site logo 2026-06-16 17:11:42 -04:00
Affaan Mustafa a993989125 docs: add Atlas Cloud sponsor placement 2026-06-16 16:21:13 -04:00
Affaan Mustafa 9444ff4978 Merge pull request #2118 from Seekers2001/add-generating-python-installer
Add generating-python-installer skill (Nuitka commercial-grade Windows packaging). Catalog counts reconciled.
2026-06-16 02:14:48 -04:00
Affaan Mustafa 351ccc5a3c docs+chore: add README Security section; fix lint regressions on main
- README: add a visible ## Security section (official sources, vuln reporting via SECURITY.md, GateGuard/IOC/AgentShield guardrails, security guide); make stats line a plain paragraph to clear MD028
- eslint: empty catch comment in run-with-flags.js; drop unneeded escape in github-coordination/parsing.js; remove unused execFileSync import in its test (#2236 follow-ups)
- markdownlint: wrap bare URLs in rules/vue/*.md (#2250 follow-up)

npm run lint green; full suite 2836/2836.
2026-06-16 02:08:14 -04:00
xiaolei 20aaf84235 chore(catalog): sync skill counts after rebase on main 2026-06-16 09:05:48 +08:00
Affaan Mustafa 304a346aee Merge pull request #2189 from affaan-m/feat/taste-skill
feat: add taste skill — music-video creative direction. Catalog counts reconciled.
2026-06-15 14:08:24 -04:00