{"id":"5be163b6-fdbf-44b8-8e2e-d0aa5d0863e5","slug":"gof-patterns","kind":"skill","name":"gof-patterns","summary":"Agent Skill that finds Gang of Four design patterns in a codebase and judges whether each one fits. Works in Claude Code, Codex, Gemini CLI, Cursor, Copilot.","owner":"jaeleeps","repoUrl":"https://github.com/jaeleeps/gof-patterns","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-10-03T23:26:06.000Z","addedAt":"2026-10-21T13:27:58.935Z","logoUrl":"https://avatars.githubusercontent.com/u/35580630?u=9d77c43625e42f54f8efb48f07c649089fd09b12&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","design-media"],"tags":["claude-code","claude-code-plugin","code-review","codex","design-patterns","gang-of-four","gof","refactoring"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T08:42:19.432Z","sample":false,"url":"https://conduits.dev/tools/gof-patterns","language":"Java","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# gof-patterns\n\n![gof-patterns icon](assets/icon.png)\n\nAn [Agent Skill](https://agentskills.io) that finds **Gang of Four design patterns** in a codebase and judges whether each one is a good fit.\n\n- **Detect**: reports which files and directories implement which of the 23 GoF patterns, mapping each pattern participant to `file:line`. Every finding gets a confidence level: Confirmed, Partial, Idiomatic, or Name-only.\n- **Evaluate**: gives each pattern a verdict of Appropriate, Over-engineered, Misapplied, or Degraded, based on whether the problem the pattern solves is actually present in the code.\n\nIt follows the open [Agent Skills](https://agentskills.io/specification) format, so it works with Claude Code, OpenAI Codex, Gemini CLI, Cursor, GitHub Copilot, OpenCode, and any other agent that reads `SKILL.md`.\n\n## Install\n\n**Any agent (Codex, Gemini CLI, Cursor, GitHub Copilot, OpenCode, Claude Code, …)**, using the [`skills`](https://github.com/vercel-labs/skills) installer:\n\n```bash\nnpx skills add jaeleeps/gof-patterns              # this project: .agents/skills/gof-patterns\nnpx skills add jaeleeps/gof-patterns -g           # every project (user scope)\nnpx skills add jaeleeps/gof-patterns -a codex     # a specific agent only\n```\n\n**Claude Code plugin:**\n\n```\n/plugin marketplace add jaeleeps/gof-patterns\n/plugin install gof-patterns@gof-patterns\n```\n\n**Manual:** copy `skills/gof-patterns/` into your agent's skills directory. Keep the folder name `gof-patterns`, because the spec requires it to match the skill name.\n\n| Agent | Project scope | User scope |\n|---|---|---|\n| Codex, Gemini CLI, Cursor, GitHub Copilot, OpenCode, Amp | `.agents/skills/gof-patterns/` | `~/.agents/skills/gof-patterns/` |\n| Claude Code | `.claude/skills/gof-patterns/` | `~/.claude/skills/gof-patterns/` |\n\n## Usage\n\nAsk in plain language, for example *\"What design patterns does `src/payments` use?\"* or *\"Is this Singleton appropriate?\"* The agent loads the skill when the request matches. You can also invoke it explicitly: `$gof-patterns` in Codex, or `/gof-patterns:gof-patterns` with the Claude Code plugin.\n\n**Agents without skill support** (chat UIs, the raw API): paste `skills/gof-patterns/SKILL.md` as instructions and attach `skills/gof-patterns/references/patterns.md` together with the code.\n\n## What it runs and accesses\n\ngof-patterns is **instructions only**: Markdown in `SKILL.md` plus the reference catalog. It has no scripts, hooks, MCP servers, or binaries, and it makes **no network requests**. When it's active, your agent reads files in your project with its own tools and permissions, and then reports. The skill never asks the agent to modify, upload, or delete anything. See [PRIVACY.md](PRIVACY.md).\n\nThe `evals/` test suite isn't part of normal use. It runs only when you start it by hand, and its runner launches `claude -p` or `codex exec` (Codex through `npx @openai/codex@0.160.0`).\n\n## Layout\n\n- `skills/gof-patterns/`: the skill. Installers copy only this folder.\n  - `SKILL.md`: the workflow and report format.\n  - `references/patterns.md`: a catalog of all 23 patterns. Each entry covers intent, canonical examples, the participants to confirm, search signals, idiomatic forms, when the pattern fits, smells, and lookalike patterns.\n- `.claude-plugin/`: the Claude Code plugin and marketplace manifests.\n- `assets/`: the plugin icon (PNG for the listing, SVG source).\n- `PRIVACY.md`: privacy policy.\n- `evals/`: test fixtures, the runner, and results. These aren't installed.\n\n## Evals\n\n`evals/` holds test prompts with checkable expectations (`evals.json`) and fixture codebases with planted patterns (`files/`: TypeScript, Python, Java). It also includes a runner that runs each prompt headlessly, with and without the skill, under Claude Code (`claude -p`) or OpenAI Codex (`codex exec`, run through `npx`; needs `codex login`):\n\n```bash\npython3 evals/run_evals.py /tmp/gof-evals                    # Claude Code, all evals, both configs\npython3 evals/run_evals.py /tmp/gof-evals --agent codex      # the same under Codex\npython3 evals/run_evals.py /tmp/gof-evals --ids 5,6          # a subset\n```\n\nGraded results for each iteration are in `evals/results/`.\n\n## Sources\n\nThe pattern catalog is based on the GoF book, and was checked against these sources:\n- Bloch & Garrod, [*23 Patterns in 80 Minutes*](https://www.cs.cmu.edu/~charlie/courses/15-214/2016-spring/slides/24%20-%20All%20the%20GoF%20Patterns.pdf), CMU 15-214 (2016)\n- Christiansson (ed.) et al., [*GoF Design Patterns – with examples using Java and UML2*](https://edeleastar.github.io/design-patterns/topic00/pdf/c-logica-gof-catalogue.pdf), Logica (2008), CC BY-SA 3.0\n\nSee the Sources section of [references/patterns.md](skills/gof-patterns/references/patterns.md) for how these sources are used and where they disagree.\n\n## License\n\n[MIT](LICENSE)\n"}