environment-memory
Agent skill fromccplugins/awesome-claude-code-plugins
Use before retrying any command, tool, or approach that failed once, and immediately after discovering any OS/shell/tool-specific quirk — checks and updates a stable cross-project quirks file so failed approaches are never silently repeated.
How to install environment-memory
install environment-memory
# install the awesome-claude-code-plugins pack with the skills CLI
npx skills add ccplugins/awesome-claude-code-plugins# or add only this skill to Claude Code: copy the folder
plugins/craftsman/skills/environment-memory/
# into
~/.claude/skills/environment-memory/ (all projects)
.claude/skills/environment-memory/ (one project)
1# Environment Memory23## Overview45Trial-and-error against the same broken assumption — "maybe bash works this time" — wastes turns6and tokens without new information. Any OS, shell, or tool quirk discovered once should be usable7forever after, in every project, not just the one where it was found.89**Core principle:** a quirk discovered once should never be rediscovered by trial and error.1011## The file1213`~/.claude/craftsman-memory/environment-quirks.md` — deliberately outside this plugin's own14install directory, so a plugin update never wipes it. Deliberately outside any single project's15memory folder too, since quirks like "hooks run via CMD.exe not bash on this machine" apply16everywhere, not just to the project where they were found.1718Format: flat, append-only, one line per entry —19```20<symptom> → <fix> (discovered: <date>, context: <where>)21```2223No YAML frontmatter, no index, no categorization — this file is meant to be read in full whenever24it's relevant, so keep it short and skimmable rather than structured for querying (token-cheap by25design).2627## Before retrying a failed command or approach28291. Check `~/.claude/craftsman-memory/environment-quirks.md` for a matching symptom before trying30 the same thing a second way, or a different way that might hit the same underlying constraint31 (e.g. "PowerShell syntax works where bash syntax silently no-ops" applies to any bash-syntax32 attempt, not just the exact command that first failed).33…
Excerpt shown under the repository's Apache-2.0 license.
