1498 Commits

Author SHA1 Message Date
suusuu0927
c32f0fffb1 fix(hooks): rewrite install_hook_wrapper.ps1 to avoid argv-dup bug
Under Claude Code v2.1.116 the first argv token of a hook command is
duplicated. When the token is a quoted Windows .exe path, bash.exe is
re-invoked with itself as script (exit 126). PR #1524 fixed the shape
of settings.local.json; this script keeps the installer consistent so
re-running it does not regenerate the broken form.

Changes:
- First token is now PATH-resolved `bash` instead of the quoted bash.exe
- Wrapper path is normalized to forward slashes for MSYS safety
- PreToolUse and PostToolUse get distinct pre/post positional arguments
- JSON output is written with LF endings (no mixed CRLF/LF)

Companion doc: docs/fixes/INSTALL-HOOK-WRAPPER-FIX-20260422.md
2026-04-22 06:19:15 +09:00
Affaan Mustafa
d87304573c
Merge pull request #1532 from livlign/docs/add-hero-image 2026-04-21 14:49:55 -04:00
livlign
86511491a6 docs: remove stars/forks stats from hero, shrink file size
Re-renders hero.png without the baked-in stars (163k) and forks (25k) numbers
that were drifting from the README's own dynamic badges. Bottom stats now show
repo-derived catalog counts that don't rot: 310 total items (183 skills + 48
agents + 79 commands), 7 harnesses, ECC 2.0α, MIT.

Also shrinks the file from 534 KB to ~131 KB via tighter pngquant settings.

Addresses review comments from cubic and greptile (stat drift) and CodeRabbit
(file size).
2026-04-22 01:47:47 +07:00
livlign
7b53efc709 docs: add hero image to README 2026-04-22 00:57:49 +07:00
suusuu0927
797692d70f fix: make detect-project.sh locale-independent and handle Windows backslash paths
Two bugs in skills/continuous-learning-v2/scripts/detect-project.sh that
silently split the same project into multiple project_id records:

1. Locale-dependent SHA-256 input (HIGH)
   The project_id hash was computed with
     printf '%s' "$hash_input" | python -c 'sys.stdin.buffer.read()'
   which ships shell-locale-encoded bytes to Python. On a system with a
   non-UTF-8 LC_ALL (e.g. ja_JP.CP932 / CP1252) the same project root
   produced a different 12-char hash than the UTF-8 locale would produce,
   so observations/instincts were silently written under a separate
   project directory. Fixed by passing the value via an env var and
   encoding as UTF-8 inside Python, making the hash locale-independent.

2. basename cannot split Windows backslash paths (MEDIUM)
   basename "C:\Users\...\ECC作成" returns the whole string on POSIX
   bash, so project_name was garbled whenever CLAUDE_PROJECT_DIR was
   passed as a native Windows path. Normalize backslashes to forward
   slashes before calling basename.

Both the primary project_id hash and the legacy-compat fallback hash
are updated to use the env-var / UTF-8 approach.

Verified: id is stable across en_US.UTF-8, ja_JP.UTF-8, ja_JP.CP932, C,
and POSIX locales; Windows-path input yields project_name=ECC作成;
ASCII-only paths regress-free.
2026-04-21 18:46:39 +09:00
Affaan Mustafa
8bdf88e5ad
Merge pull request #1501 from affaan-m/feat/ecc2-board-observability-integration
feat: add ECC2 board observability view
2026-04-19 14:02:52 -07:00
Taro Kawakami
0c3fc7074e review: broaden CLAUDE_TRANSCRIPT_PATH fallback to cover missing/empty JSON fields
Previously the env fallback ran only when JSON.parse threw. If stdin was valid
JSON but omitted transcript_path or provided a non-string/empty value, the
script dropped to the getSessionIdShort() fallback path, re-introducing the
collision this PR targets.

Validate the parsed transcript_path and apply the env-var fallback for any
unusable value, not just malformed JSON. Matches coderabbit's outside-diff
suggestion and keeps both input-source paths equivalent.

Refs #1494
2026-04-19 14:35:21 +09:00
Taro Kawakami
01d816781e review: apply sanitizeSessionId to UUID shortId, fix test comment
- Route the transcript-derived shortId through sanitizeSessionId so the
  fallback and transcript branches remain byte-for-byte equivalent for any
  non-UUID session IDs that still land in CLAUDE_SESSION_ID (greptile P1).
- Clarify the inline comment in the first regression test: clearing
  CLAUDE_SESSION_ID exercises the transcript_path branch, not the
  getSessionIdShort() fallback (coderabbit P2).

Refs #1494
2026-04-19 14:30:00 +09:00
Taro Kawakami
93cd5f4cff review: address P1/P2 bot feedback on shortId derivation
- Use last-8 chars of transcript UUID instead of first-8, matching
  getSessionIdShort()'s .slice(-8) convention. Same session now produces the
  same filename whether shortId comes from CLAUDE_SESSION_ID or transcript_path,
  so existing .tmp files are not orphaned on upgrade.
- Normalize extracted hex prefix to lowercase to avoid case-driven filename
  divergence from sanitizeSessionId()'s lowercase output.
- Explicitly clear CLAUDE_SESSION_ID in the first regression test so the env
  leak from parent test runs cannot hide the fallback path.
- Add regression tests for the lowercase-normalization path and for the case
  where CLAUDE_SESSION_ID and transcript_path refer to the same UUID (backward
  compat guarantee).

Refs #1494
2026-04-19 14:19:29 +09:00
Taro Kawakami
a35b2d125d fix(hooks): isolate session-end.js filename using transcript_path UUID
When session-end.js runs and CLAUDE_SESSION_ID is unset, getSessionIdShort()
falls back to the project/worktree name. If any other Stop-hook in the chain
spawns a claude subprocess (e.g. an AI-summary generator using 'claude -p'),
the subprocess also fires the full Stop chain and writes to the same project-
name-based filename, clobbering the parent's valid session summary with a
summary of the summarization prompt itself.

Fix: when stdin JSON (or CLAUDE_TRANSCRIPT_PATH) provides a transcript_path,
extract the first 8 hex chars of the session UUID from the filename and use
that as shortId. Falls back to the original getSessionIdShort() when no
transcript_path is available, so existing behavior is preserved for all
callers that do not set it.

Adds a regression test in tests/hooks/hooks.test.js.

Refs #1494
2026-04-19 11:37:32 +09:00
Gaurav Dubey
53a599fc03 docs: update README to reflect agents field removal from plugin manifest
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-18 23:29:47 +05:30
Gaurav Dubey
c19fde229a fix: remove agents field from plugin.json manifest (#1459)
The Claude Code plugin validator rejects the "agents" field entirely.
Remove it from the manifest, schema, and tests. Update schema notes
to document this as a known constraint alongside the hooks field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-18 23:29:47 +05:30
Affaan Mustafa
7992f8fcb8 feat: integrate ecc2 board observability prototype 2026-04-18 01:37:44 -04:00
Affaan Mustafa
1a50145d39
Merge pull request #1462 from affaan-m/fix/remove-legacy-ecc-install-refs
fix: restore string hook commands for Claude Code schema
2026-04-15 20:07:04 -07:00
Affaan Mustafa
eb900ddd81 test: align hook install expectations with Claude schema 2026-04-15 19:33:34 -07:00
Affaan Mustafa
ccecb0b9f4 fix: restore string hook commands for Claude Code schema 2026-04-15 17:25:33 -07:00
Affaan Mustafa
9fb88c6700
Merge pull request #1449 from affaan-m/fix/bash-hook-dispatcher-forkstorm-clean
fix: consolidate bash hooks without fork storms
2026-04-15 17:23:09 -07:00
Affaan Mustafa
6b7bd7156c fix: relax pnpm strict build checks in CI 2026-04-15 16:44:58 -07:00
Affaan Mustafa
1fabf4d2cf fix: consolidate bash hooks without fork storms 2026-04-14 21:23:57 -07:00
Affaan Mustafa
7eb7c598fb
Merge pull request #1448 from affaan-m/fix/manual-release-dispatch
fix: allow manual release workflow dispatch
2026-04-14 21:20:10 -07:00
Affaan Mustafa
8b5c0c1b07 fix: allow manual release workflow dispatch 2026-04-14 21:02:23 -07:00
Affaan Mustafa
c1e7a272cc
Merge pull request #1446 from affaan-m/fix/release-publish-and-migration-docs
fix: publish npm releases and clarify install identifiers
2026-04-14 20:58:20 -07:00
Affaan Mustafa
5427c27930
Merge pull request #1445 from affaan-m/fix/plugin-installed-hook-root-resolution
fix: resolve plugin-installed hook root on marketplace installs
2026-04-14 20:43:40 -07:00
Affaan Mustafa
b5c4d2beb9 fix: wire npm auth into release publish 2026-04-14 20:43:22 -07:00
Affaan Mustafa
34380326c8 fix: publish npm releases and clarify install identifiers 2026-04-14 20:42:28 -07:00
Affaan Mustafa
9227d3cc30 docs: add ecc recovery guidance for wiped setups 2026-04-14 20:41:18 -07:00
Affaan Mustafa
8da668f1ac
Merge pull request #1439 from affaan-m/fix/urgent-install-and-name
fix: unblock urgent install and gateguard regressions
2026-04-14 20:36:06 -07:00
Affaan Mustafa
1b7c5789fc fix: bootstrap plugin-installed hook commands safely 2026-04-14 20:24:21 -07:00
Affaan Mustafa
cdeb837838 Merge origin/main into fix/urgent-install-and-name 2026-04-14 20:23:54 -07:00
Affaan Mustafa
cca163c776
Merge pull request #1440 from affaan-m/fix/dashboard-terminal-safety
fix(dashboard): harden terminal launch and maximize behavior
2026-04-14 20:21:51 -07:00
Affaan Mustafa
c54b44edf3 test: fix harness audit env fallback 2026-04-14 20:03:57 -07:00
Affaan Mustafa
2691cfc0f1 fix: restore dashboard branch ci baseline 2026-04-14 19:54:28 -07:00
Affaan Mustafa
b2c4b7f51c Merge remote-tracking branch 'origin/main' into fix/urgent-install-and-name 2026-04-14 19:50:35 -07:00
Affaan Mustafa
c924290b5b fix: restore dashboard branch CI baseline 2026-04-14 19:46:00 -07:00
Affaan Mustafa
e46deb93c8 fix: harden dashboard terminal launch helpers 2026-04-14 19:44:32 -07:00
Affaan Mustafa
8776c4f8f3 fix: harden urgent install and gateguard patch 2026-04-14 19:44:08 -07:00
Affaan Mustafa
e5225db006 docs: sync catalog counts on urgent fix branch 2026-04-14 19:31:23 -07:00
Affaan Mustafa
48a30b53c8
Merge pull request #1402 from affaan-m/docs/community-skill-highlights
docs: add community skill ecosystem notes
2026-04-14 19:28:57 -07:00
Affaan Mustafa
3be24a5704 fix: restore urgent PR CI health 2026-04-14 19:26:24 -07:00
Affaan Mustafa
76b6e22b4d fix: unblock urgent install and gateguard regressions 2026-04-14 19:23:07 -07:00
Affaan Mustafa
ecc5e0e2d6
Merge pull request #1432 from S1lverline/fix/harness-audit-marketplaces
fix(harness-audit): detect ECC plugin under marketplaces/ subdirectory
2026-04-14 19:13:24 -07:00
S1lverline
aa96279ecc fix(harness-audit): detect ECC plugin under marketplaces/ subdirectory
`findPluginInstall()` in `scripts/harness-audit.js` scans two candidate
roots:

  {rootDir}/.claude/plugins/
  {HOME}/.claude/plugins/

Current Claude Code marketplace installs live one directory deeper:

  {HOME}/.claude/plugins/marketplaces/{ecc,everything-claude-code}/...

As a result, running `node scripts/harness-audit.js repo` on any
consumer project reports `consumer-plugin-install: false` even when ECC
is fully installed via marketplace, costing 4 points from Tool Coverage.

Add the `marketplaces/` intermediate directory to `candidateRoots` so
both legacy and current install layouts are recognized. The change is
purely additive: existing candidate paths still resolve, and the new
ones only match when the marketplace layout is present.

Reproduction:
  1. Install ECC via Claude Code plugin marketplace
  2. cd into any consumer project
  3. node ~/.claude/plugins/marketplaces/everything-claude-code/scripts/harness-audit.js repo
  4. Observe consumer-plugin-install=false despite a working install
2026-04-14 23:37:10 +09:00
Affaan Mustafa
e0ddb331f6
Merge pull request #1367 from ozoz5/feat/gateguard
feat(hooks,skills): add gateguard fact-forcing pre-action gate
2026-04-13 01:05:20 -07:00
Affaan Mustafa
85e331e49a
Merge pull request #1369 from affaan-m/dependabot/github_actions/pnpm/action-setup-6.0.0
build(deps): bump pnpm/action-setup from 5.0.0 to 6.0.0
2026-04-13 01:05:16 -07:00
Affaan Mustafa
5eedc8adb4
Merge pull request #1377 from Anish29801/feat/dashboard-gui
Feat/dashboard gui
2026-04-13 01:04:14 -07:00
Affaan Mustafa
c64cc69eb2
Merge pull request #1363 from gnpthbalaji/feat/accessibility
feat(agent + skill): a11y-architect agent and accessibility skill
2026-04-13 00:59:57 -07:00
Affaan Mustafa
6c67566767 fix: keep gateguard session state alive 2026-04-13 00:58:50 -07:00
Affaan Mustafa
deb3b1dc14 fix: make dashboard GUI build surfaces opt-in safe 2026-04-13 00:56:56 -07:00
Affaan Mustafa
2e44beabc1 test: isolate gateguard state dir cleanup 2026-04-13 00:53:57 -07:00
Affaan Mustafa
e2b5353fec
Merge pull request #1398 from affaan-m/fix/opencode-plugin-version-sync
fix: sync OpenCode hook banner version
2026-04-13 00:52:40 -07:00