Individual skill
the-pragmatic-programmer
Apply Hunt and Thomas-inspired pragmatic programming rules when improving engineering judgment, feedback loops, DRY knowledge, orthogonality, automation, or adaptability.
the-pragmatic-programmer/SKILL.md
Source commit 893a88a6fce3a80c565bf39ac65021b43a8b2990
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- Yes
- Skill scan complete
- Yes
- Observed behavior
- Instructions only
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
Claude Code
Destination .claude/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.claude/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.claude/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)Codex
Destination .agents/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.agents/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.agents/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)Cursor
Destination .cursor/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.cursor/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.cursor/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)Gemini CLI
Destination .gemini/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.gemini/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.gemini/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)GitHub Copilot
Destination .github/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.github/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.github/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)OpenCode
Destination .opencode/skills/the-pragmatic-programmer
(
set -euo pipefail
destination='./.opencode/skills/the-pragmatic-programmer'
if [ -e "$destination" ] || [ -L "$destination" ]; then printf '%s\n' 'Destination already exists; nothing overwritten.' >&2; exit 1; fi
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git clone --filter=blob:none --no-checkout -- 'https://github.com/ciembor/agent-rules-books.git' "$work/repo"
git -C "$work/repo" checkout --detach 893a88a6fce3a80c565bf39ac65021b43a8b2990
git -C "$work/repo" archive --format=tar '893a88a6fce3a80c565bf39ac65021b43a8b2990:the-pragmatic-programmer' > "$work/skill.tar"
mkdir -p -- './.opencode/skills'
mkdir -- "$destination"
tar -xf "$work/skill.tar" -C "$destination"
)Repository context
- Repository stars (not skill ratings)
- 3,231
- Repository last updated
- Sep 10, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- agents-md Repository topic
- agent-rules Repository topic
- agent-skills Repository topic
- code-quality Repository topic
- refactoring Repository topic
- domain-driven-design Repository topic
- programming-books Repository topic
- ai-agent Repository topic
- ai-skills Repository topic
- claude-code Repository topic
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 748 bytesthe-pragmatic-programmer.mddoc · 13,398 bytesthe-pragmatic-programmer.mini.mddoc · 7,165 bytesthe-pragmatic-programmer.nano.mddoc · 2,263 bytes
Read excerpt
# The Pragmatic Programmer Skill
Use this skill when a task involves pragmatic engineering judgment, responsibility, DRY at the knowledge level, orthogonality, automation, prototyping, fast feedback, or adaptable design.
Before making design or code decisions, read and apply [the-pragmatic-programmer.mini.md](the-pragmatic-programmer.mini.md). Use [the-pragmatic-programmer.md](the-pragmatic-programmer.md) only as a deeper reference when the mini rules are not enough for the current engineering tradeoff.