Files
everything-claude-code/.claude/rules/node.md
Claude 72de19effd chore: apply Claude setup improvements
- Expand permissions.allow (git, node, npm, npx, ls, cat, Read, Edit, Write, Glob, Grep) to reduce approval prompts
- Set CLAUDE_ECC_MODE=standard in env for consistent hook profile
- Gate stop-hook-git-check.sh behind ECC_GIT_CHECK=1 to prevent blocking mid-session
- Add project-level Node.js rules for ECC repo (stack, file conventions, hook dev standards)
- observe.sh confirmed already async — no change needed

https://claude.ai/code/session_014SqRA9y6HwVVPGeSCJfwVF
2026-03-28 20:03:26 -04:00

2.0 KiB

Node.js Rules for everything-claude-code

Project-specific rules for the ECC codebase. Extends common rules.

Stack

  • Runtime: Node.js >=18 (no transpilation, plain CommonJS)
  • Test runner: node tests/run-all.js — individual files via node tests/**/*.test.js
  • Linter: ESLint (@eslint/js, flat config)
  • Coverage: c8
  • Lint: markdownlint-cli for .md files

File Conventions

  • scripts/ — Node.js utilities, hooks. CommonJS (require/module.exports)
  • agents/, commands/, skills/, rules/ — Markdown with YAML frontmatter
  • tests/ — Mirror the scripts/ structure. Test files named *.test.js
  • File naming: lowercase with hyphens (e.g. session-start.js, post-edit-format.js)

Code Style

  • CommonJS only — no ESM (import/export) unless file ends in .mjs
  • No TypeScript — plain .js throughout
  • Prefer const over let; never var
  • Keep hook scripts under 200 lines — extract helpers to scripts/lib/
  • All hooks must exit 0 on non-critical errors (never block tool execution unexpectedly)

Hook Development

  • Hook scripts receive JSON on stdin — always const input = JSON.parse(fs.readFileSync(0, 'utf8'))
  • Async hooks: mark "async": true in settings.json with a timeout ≤30s
  • Blocking hooks (PreToolUse, stop): keep fast (<200ms) — no network calls
  • Use run-with-flags.js wrapper for all hooks so CLAUDE_ECC_MODE gating works
  • Always exit 0 on parse errors; log to stderr with [HookName] prefix

Testing Requirements

  • Run node tests/run-all.js before committing
  • New scripts in scripts/lib/ require a matching test in tests/lib/
  • New hooks require at least one integration test in tests/hooks/

Markdown / Agent Files

  • Agents: YAML frontmatter with name, description, tools, model
  • Skills: sections — When to Use, How It Works, Examples
  • Commands: description: frontmatter line required
  • Run npx markdownlint-cli '**/*.md' --ignore node_modules before committing