Commit Graph

310 Commits

Author SHA1 Message Date
Affaan Mustafa
32e3a31c3e Merge pull request #1539 from suusuu0927/claude/detect-project-locale-fix-20260421
fix: make detect-project.sh locale-independent and handle Windows bac…
2026-04-21 18:13:52 -04:00
Junming
20041294d9 fix(gateguard): rewrite routineBashMsg to use fact-presentation pattern (#1531)
* fix(gateguard): rewrite routineBashMsg to use fact-presentation pattern

The imperative 'Quote user's instruction verbatim. Then retry.' phrasing
triggers Claude Code's runtime anti-prompt-injection filter, deadlocking
the first Bash call of every session. The sibling gates (edit, write,
destructive) use multi-point fact-list framing that the runtime accepts.

Align routineBashMsg with that pattern to restore the gate's intended
behavior without changing run(), state schema, or any public API.

Closes #1530

* docs(gateguard): sync SKILL.md routine gate spec with new message format

CodeRabbit flagged that skills/gateguard/SKILL.md still described the
pre-fix imperative message. Update the Routine Bash Gate section to
match the numbered fact-list format used by the new routineBashMsg().
2026-04-21 18:02:16 -04: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
76b6e22b4d fix: unblock urgent install and gateguard regressions 2026-04-14 19:23:07 -07: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
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
seto
dd2962ee92 fix: 5 bugs + 2 tests from 3-agent deep bughunt
Bugs fixed:
- B1: JS gate messages still said "cat one real record" -> redacted/synthetic
- B2: Destructive bash key used 200-char truncation (collision bypass) -> SHA256 hash
- B3: sanitizePath only stripped \n\r -> now strips null bytes, bidi overrides, all control chars
- B4: Tool name matching was case-sensitive (latent bypass) -> lookup map normalization
- B5: SKILL.md Gate Types missing MultiEdit -> added with explanation

Tests added:
- T1: MultiEdit gate denies first unchecked file (CRITICAL - was untested)
- T2: MultiEdit allows after all files gated

11/11 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:32:46 +09:00
seto
8cd6378c81 fix: cubic-dev-ai round 3 — SKILL.md consistency
P2: Description now says "Edit/Write/Bash (including MultiEdit)"
    instead of listing MultiEdit as a separate top-level gate

P2: Write Gate and Anti-Patterns now use same "redacted or synthetic
    values" wording as Edit Gate (was still "cat one real record")

All 3 gate doc sections now consistent. 9/9 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:19:01 +09:00
seto
4dbed5ff5b fix: cubic-dev-ai round 2 — 3 issues across SKILL.md + pruning
P1: Gate message asked for raw production data records — changed to
    "redacted or synthetic values" to prevent sensitive data exfiltration

P2: SKILL.md description now includes MultiEdit (was missing after
    MultiEdit gate was added in previous commit)

P2: Session key pruning now caps __prefixed keys at 50 to prevent
    unbounded growth even in theoretical edge cases

9/9 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:11:33 +09:00
Affaan Mustafa
0fcb43ea90 fix(grader): handle forward after_step references 2026-04-12 23:36:16 -07:00
Balaji Guntur
51abaf0fc0 fix: correct accessibility terminology and code fence in a11y skill and agent
- Fix inverted focus trap terms: Keyboard Traps -> Uncontained Modal Focus with WCAG SC 2.1.2 reference
- Fix Step 1 blocker example: missing keyboard traps -> missing focus containment in modals
- Attach [language] placeholder to opening triple-backtick fence in agent implementation template
2026-04-11 20:30:47 -07:00
seto
5a03922934 feat(hooks,skills): add gateguard fact-forcing pre-action gate
A PreToolUse hook that forces Claude to investigate before editing.
Instead of self-evaluation ("are you sure?"), it demands concrete facts:
importers, public API, data schemas, user instruction.

A/B tested: +2.25 quality points (9.0 vs 6.75) across two independent tasks.

- scripts/hooks/gateguard-fact-force.js — standalone Node.js hook
- skills/gateguard/SKILL.md — skill documentation
- hooks/hooks.json — PreToolUse entries for Edit|Write and Bash

Full package with config: pip install gateguard-ai
Repo: https://github.com/zunoworks/gateguard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 11:41:33 +09:00
Balaji Guntur
33673fb37a Fix PR comments - renamed 'when to activate' to 'when to use', fixed the iOS reference link to current, added iOS HIG link 2026-04-11 13:33:17 -07:00
Balaji Guntur
643d03575a Update the accessibility skill to include related skills 2026-04-11 12:58:21 -07:00
Balaji Guntur
aa8948d5cf Adding accessibility skill to go in with the inclusive-ui-agent 2026-04-11 12:51:21 -07:00
Affaan Mustafa
1b3ccb85aa docs: mark continuous-learning v1 as legacy 2026-04-08 16:31:58 -07:00
Affaan Mustafa
9bd8e8b3c7 fix: resolve markdownlint violations 2026-04-08 15:40:26 -07:00
Affaan Mustafa
572c7a8fe6 docs: add capability surface selection guide 2026-04-06 14:21:28 -07:00
Affaan Mustafa
df96abe74c fix: harden windows observer prompt handling 2026-04-06 14:05:38 -07:00
Affaan Mustafa
e09c548edf feat: add agent introspection debugging skill 2026-04-05 20:10:54 -07:00
Affaan Mustafa
c547823c53 docs: narrow coding standards scope 2026-04-05 20:05:50 -07:00
Affaan Mustafa
ff303d71b6 feat: salvage frontend-design from hermes branch 2026-04-05 17:48:46 -07:00
Affaan Mustafa
a1e37d7c0d feat: add agent-sort selective install workflow 2026-04-05 17:36:37 -07:00
Affaan Mustafa
4b24d5777d docs: clean stale template references 2026-04-05 17:05:53 -07:00
Affaan Mustafa
92fbc52906 docs: separate product lens from capability planning 2026-04-05 16:59:54 -07:00
Affaan Mustafa
05d836387e feat: add product capability planning lane 2026-04-05 16:58:02 -07:00
Affaan Mustafa
9d7531706d feat: add connector and dashboard builder skills 2026-04-05 16:47:33 -07:00
Affaan Mustafa
ece14da5cd feat: add ECC-native operator workflow skills 2026-04-05 16:31:26 -07:00
Affaan Mustafa
eb39a0ea57 feat: add security bounty hunting skill 2026-04-05 16:13:53 -07:00
Affaan Mustafa
50ebf1605a feat: add blockchain security skill bundle 2026-04-05 16:12:42 -07:00
Affaan Mustafa
8fe97d1675 feat: add HIPAA entrypoint skill 2026-04-05 16:10:05 -07:00
Affaan Mustafa
31afed5b5d feat: add SEO audit support 2026-04-05 15:46:01 -07:00
Affaan Mustafa
da813d48a0 feat: add code tour workflow 2026-04-05 15:42:58 -07:00
Affaan Mustafa
cba43546fd feat: add unified notifications ops 2026-04-05 15:33:26 -07:00
Affaan Mustafa
753da37743 feat: add council decision workflow 2026-04-05 15:27:54 -07:00
Affaan Mustafa
a77c8c3f85 feat: add ecc tools cost audit workflow 2026-04-05 15:19:56 -07:00
Affaan Mustafa
0f4f95b3de refactor: move project guidelines example into docs 2026-04-05 15:03:59 -07:00
Affaan Mustafa
1346f83b08 fix: shorten plugin slug to ecc 2026-04-05 14:31:30 -07:00
Affaan Mustafa
908116d736 fix: raise observer turn budget 2026-04-05 14:23:06 -07:00
Affaan Mustafa
6eba30f02b feat: restore reusable ops skills from hermes branch 2026-04-05 13:30:55 -07:00
Affaan Mustafa
5df943ed2b feat: add nestjs development patterns 2026-04-02 18:27:51 -07:00
Affaan Mustafa
8bd5a7a5d9 fix: restore markdownlint baseline on main 2026-04-02 18:05:27 -07:00
Affaan Mustafa
16e9b17ad7 fix: clean up observer sessions on lifecycle end 2026-04-02 18:02:29 -07:00
Affaan Mustafa
be0c56957b feat: add jira integration workflow 2026-04-02 17:51:03 -07:00
Affaan Mustafa
badccc3db9 feat: add C# and Dart language support 2026-04-02 17:48:43 -07:00
Affaan Mustafa
a60d5fbc00 fix: port ci and markdown cleanup from backlog 2026-04-02 17:09:21 -07:00
Affaan Mustafa
70be8f9f44 fix: add POSIX fallback for observer lazy-start 2026-04-02 17:07:32 -07:00
Affaan Mustafa
635fcbd715 refactor: consolidate writing voice rules 2026-04-02 15:45:19 -07:00
Affaan Mustafa
bf3fd69d2c refactor: extract social graph ranking core 2026-04-02 02:51:24 -07:00
Affaan Mustafa
31525854b5 feat(skills): add brand voice and network ops lanes 2026-04-01 19:41:03 -07:00