Six ${VAR} forms, five .mcp.json fields, two tiny servers: what Claude Code MCP expansion actually producedI put six environment-variable forms into the args, env and command fields of one project .mcp.json (plus url and headers on a second, HTTP server) and read back what the server process actually receiSep 28 · 12 min readrulestack.hashnode.dev
Three Claude Code subagent files, three models in frontmatter: what each launch cost, and the field the validator waved throughWe keep three custom Claude Code subagents in .claude/agents/: a bulk reader that fetches pages and logs so the main conversation does not have to, an independent reviewer that judges things without sSep 27 · 12 min readrulestack.hashnode.dev
Does a line in auto memory steer the next session like CLAUDE.md does? 3 of 4 runs vs 4 of 4, and 0 of 4 with neitherA one-line fact stored in Claude Code's auto memory was applied on the first attempt in 3 of 4 fresh sessions (and after one failure in the 4th). The same line in CLAUDE.md was applied first-attempt iSep 26 · 13 min readrulestack.hashnode.dev
Our CLAUDE.md and skills named 190 commands: one pointed at a deleted script for 24 days while 28 shape tests passedOur CLAUDE.md, three rules files, nine skills and one CLI reference contain 707 pnpm <name> references to 190 unique names, checked against 199 scripts in package.json: today, 0 are missing. Git histo11VSep 25 · 15 min readrulestack.hashnode.dev
Claude Code permission rules: Bash(git push:*) stopped 8 of 14 ways to push, and 5 reached the remoteWith a single deny rule, Bash(git push:*), in a throwaway repo's .claude/settings.json, we asked Claude Code 2.1.278 to run 14 different spellings of "push to origin", one per claude -p run. The rule 1BSep 24 · 16 min readrulestack.hashnode.dev