The skills existed but sessions never leaned on them - grep+read wins
the tool-selection contest when descriptions are phrased as information
needs ("use when you need to know how to call...") rather than task
triggers, and grep 'succeeds' without revealing which of the repo's
coexisting module copies is loaded. Changes to convert them from
available options into workflow steps:
- SKILL.md descriptions rewritten task-first ("Use BEFORE reviewing,
testing, editing..." / "Use BEFORE writing any new Tcl helper..."),
with run-it-first wording, the multiple-module-copies rationale, and
cost stated up front (one sub-1s side-effect-free invocation).
- Invocations shortened to lib: script-path form (verified working,
~0.45s each): punk91 src script lib:developer/whatis|nslist.
- New caveat in both: prefer the Bash tool over PowerShell (attached
console can flip colour/terminal detection in punkshell children).
- AGENTS.md Repo-wide Notes entry converted from reference note to
DIRECTIVE: whatis/nslist first, grep reserved for full-text searches.
- .claude/settings.json: allow entries for both scripts (Bash +
PowerShell, punk91/bin/punk91/./bin/punk91 prefixes) so first use is
prompt-free.
.claude/skills copies re-synced from canonical .agents/skills
(diff-verified byte-identical).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Stock tclsh treats any leading-dash arg other than -encoding as argv for an
interactive/stdin session: on a console it hangs at a prompt, with piped stdin
it exits 0 silently ignoring the supposed one-liner. Agents habitually reach
for -e (perl/python/node reflex), wasting time waiting on hung processes.
- root AGENTS.md User Preferences: document the misparse, the correct patterns
(temp .tcl file or script via stdin) and the defensive stdin-redirect habit
- .claude/settings.json: PreToolUse hook denying Bash/PowerShell invocations
of tclsh with -e, anchored to command position (start/pipe/semicolon/paren)
so prose mentions in commit messages or grep args do not false-positive;
corrective guidance returned to the agent
- .gitignore: narrow the .claude ignore so shared settings.json is tracked
while session-local files stay ignored
- .fossil-settings: ignore-glob hand-derived per the no-negation rule
(.claude/* wholesale + explicit fossil add of settings.json), exception set
in AGENTS.md updated; fossil extras under-ignore check verified empty
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com