SLOPSHOPPER

my-mod

A starting point: registers /my-command at session start and answers it. Makes no model calls. Replace this line with what your mod does and what it costs per…

newcommand
★ 536v0.1.0MITupdated 2026-10-02DannyMac180/skills/modsmith/templates/minimal
A shopper browsing a rack in a slop shop
Preview · a replayed session in a sandbox
claude · ~/work/app · my-mod
› fix the failing auth test and add an audit log call ⏺ Read(src/auth.ts) ⎿ Read 6 lines ⏺ Update(src/auth.ts) ⎿ Added 2 lines, removed 1 line ⏺ Bash(bun test) ⎿ 3 pass, 1 fail ● Done. refresh now rejects expired claims and logs an audit event. ✻ Worked for 42s · done 4:20 PM › /my-command ⎿ my-mod: hello from my-mod ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ? for shortcuts
README

Skills

Public AI agent skills by DannyMac180.

Go deeper

I write Attention Heads — deep, evidence-backed writing on AI, cognition, and agentic engineering. The Agentic Engineering Field Notes series is where I publish practical advice on the craft of using AI. Subscribe to get new posts to your inbox.

Available Skills

  • modsmith - ModSmith: ready-made Claude Mods (quiz after the turn, assumption ledger, next-steps supervisor, mode registry, effort modes, shared Kanban dashboard) plus the judgment Claude Code's built-in mod authoring leaves out: per-turn token and prompt-cache review, vetting someone else's mod before installing, and rules for mods that compose.
  • codex-dynamic-workflows - Plan and run supervised AI-agent dynamic workflows with goal mode, subagents or simulated work packets, approval gates, integration, verification, and reusable workflow artifacts.
  • codex-relay - Relay: open one new native Codex task from your current task with a compact handoff, end your turn, and receive a single completion or blocker message back. Honors your chosen model and effort, or your default.
  • explain-this - Explain any digital artifact (papers, articles, code) shaped by a persistent learner profile, with comprehension quizzes and spaced-repetition review. On first use it interviews you (~10 min) and creates ~/.explain-this/.

Install

Claude Code plugin marketplace (ModSmith). Run /plugin marketplace add DannyMac180/skills, then /plugin install modsmith-all@modsmith for the skill plus all six ready-made mods, or /plugin install modsmith@modsmith for the skill alone and /plugin install quiz-after@modsmith (or any other ModSmith mod) one by one.

Any agent. If your AI agent supports skills, you can point it at the GitHub URL for a skill and ask it to install that skill:

Install the AI agent skill at https://github.com/DannyMac180/skills/tree/main/codex-dynamic-workflows

You can also clone this repo and copy a skill folder into your agent's skills directory. Adjust the destination path for your agent; this example uses Codex's user-scope skills folder (~/.agents/skills):

git clone https://github.com/DannyMac180/skills.git
cd skills
mkdir -p "$HOME/.agents/skills"
cp -R codex-dynamic-workflows "$HOME/.agents/skills/"

Then start a new agent session and invoke it with:

Use $codex-dynamic-workflows to plan and run a supervised multi-agent workflow for this task: ...

License

MIT

Source 1 files
hooks/register.ts 28 lines
1import type { Register } from 'claude-code'
2
3// A minimal mod: registers one slash command at session start and answers it
4// without passing it on. Replace with whatever you are actually building.
5
6export const register: Register = on => {
7  on('session.start', async ($, e, next) => {
8    const result = await next(e)
9
10    // The chain has already run: a failed registration is logged, never
11    // thrown, so it cannot fail the hook or reach the engine.
12    await $.command
13      .register({
14        name: 'my-command',
15        description: 'What this command does (my-mod)',
16        immediate: true,
17      })
18      .catch(err => $.ui.log(`my-mod: /my-command not registered: ${err}`))
19
20    return result
21  })
22
23  // This hook answers the command itself, so it never calls next(e).
24  on('command.run', { command: 'my-command' }, async ($, e) => {
25    return { text: 'hello from my-mod' }
26  })
27}
28