dumkydewilde/agent-skills

Agent skills for Claude Code and Codex: general-purpose tools and the dstack engineering workflow.

HTML

1

25 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

History leakage: a product explaining its own edit history (r/OpenAI)

I got so annoyed by edit history leaking into everything from models desperately trying to prove themselves or oversharing what has been deleted, I had an agent come up with a name for it so I could [create a…

2

Oct 9, 2026

History leakage: a product explaining its own edit history (r/ClaudeAI)

I got so annoyed by edit history leaking into everything from models desperately trying to prove themselves or oversharing what has been deleted, I had Claude come up with a name for it so I could [create a…

2

Oct 9, 2026

README

agent-skills

Agent skills for Claude Code and Codex, shipped as two plugins. Both work in either harness from the same canonical source.

tools

General-purpose utilities.

SkillWhat it does
conversation-historySearch past Claude Code, Claude Desktop, Codex, and ChatGPT conversations from local logs and exports
web-scraperBuild resilient scrapers via a discovery-then-script workflow
field-notesBuild field notes: one sheet, a notebook of them, or a shelf of notebooks. Markdown sources, HTML templates for a swipeable deck on aged paper, the indexes that open it, and image prompts for printed posters

Twelve food sheets on a notebook index, each a drawn mark on pale paper
captioned in typewriter type

What field-notes builds, at the middle size: one notebook of twelve sheets, generated from markdown. The whole shelf is live on dumky.net.

dstack

A working style for non-trivial engineering and writing work. Forked from pstack by Lauren Tan (MIT). docs/dstack/UPSTREAM.md covers what changed in the port and why; docs/dstack/LICENSE carries the upstream MIT notice.

Start with /dstack-mode at the top of a task. It matches the task to a playbook, copies that playbook's steps into a todo list, and routes to the other skills as the steps need them. The rest are situational.

SkillUse it when
dstack-modeDefault entry point for any non-trivial task
principlesThe twenty-two rules the mode works from, one file each
howYou want a walkthrough of how a subsystem works
whyYou want to know why something was built this way
teachYou want to actually understand a change, not just have it summarized
recallYou are resuming work and want your recent context rebuilt
architectCode is about to cross a function boundary and the shape is not settled
arenaYou want N parallel attempts, then the best parts of each
swarmYou want N parallel workers across slices, then one report
interrogateYou have a diff and want several reviewers to try to break it
blast-radiusA small-looking change might break something outside the diff
figure-it-outNo bundled playbook fits, so design a rigorous one
tddA bug has a cheap local test path, so write the failing test first
create-verification-skillThe project has no scripted way to prove app behavior
show-me-your-workYou want a reviewable decision trail for unattended work
reflectA long task landed and the lesson should become a skill edit
authoring-skillsYou are writing or fixing a SKILL.md
no-commentsStrip comments before review
unslopYou are cleaning up writing, removes AI tells
dehistorizeAn artifact narrates its own edit history, strip the leaks
broRestate the last message in plain human language
technical-writingDocs, RFCs, readmes, PR descriptions, commit messages
typescript-best-practicesYou are reading or editing TypeScript
setup-dstackChange which model runs which dstack role

Claude Code also gets two subagents from this plugin, dstack-agent and comment-sicko. The Codex plugin format has no agents key, so those are Claude Code only.

The review panels (interrogate, arena, architect, the how critics) want a second vendor at the table. /setup-dstack writes ~/.claude/dstack-models.md to say which model runs which role. Without that file each skill falls back to its inline default, which is Claude-only.

Install in Claude Code

/plugin marketplace add dumkydewilde/agent-skills
/plugin install tools@agent-skills
/plugin install dstack@agent-skills

Or wire it into ~/.claude/settings.json so it stays available and updates itself:

{
  "extraKnownMarketplaces": {
    "agent-skills": {
      "source": { "source": "github", "repo": "dumkydewilde/agent-skills" }
    }
  }
}

Install in Codex

codex plugin marketplace add dumkydewilde/agent-skills
codex plugin add tools@agent-skills
codex plugin add dstack@agent-skills
codex plugin list --marketplace agent-skills

For local development before pushing, add a clone as a local marketplace from the repo root:

codex plugin marketplace add .
codex plugin add dstack@agent-skills

Layout

agent-skills/
├─ .claude-plugin/marketplace.json       # Claude marketplace manifest
├─ .agents/plugins/marketplace.json      # Codex marketplace manifest
├─ skills/                               # canonical, agent-agnostic source of truth
│  ├─ tools/{conversation-history,field-notes,web-scraper}/
│  └─ dstack/
│     ├─ dstack-mode/                    # router, playbooks, references, scripts
│     ├─ principles/references/          # twenty-two principle files
│     └─ <twenty-two more skills>/
└─ plugins/
   ├─ claude/{tools,dstack}/   (.claude-plugin/plugin.json + skills -> ../../../skills/<name>)
   └─ codex/{tools,dstack}/    (.codex-plugin/plugin.json + real, release-ready skill copy)

The canonical skill files live under skills/<plugin>/<skill-name>/. The Claude plugin symlinks to that source. The Codex/ChatGPT plugin carries a real copy, because their importer ignores symbolic links immediately inside skills/.

Changing a skill

Edit the canonical copy under skills/, never the one under plugins/codex/. Then refresh the release copies and check them:

scripts/sync-plugin-skills.sh
python3 -m unittest discover -s tests -v

The tests check three things. The Codex copy matches the canonical source byte for byte, the Claude symlink points where it should, and every skill has valid frontmatter with resolvable links and no leftover Cursor-only keys. CI runs the same two test modules on every push and pull request.

Adding a whole plugin also means adding its name to the PLUGINS array in scripts/sync-plugin-skills.sh and to PLUGINS in tests/test_codex_plugin_package.py, plus an entry in both marketplace manifests.

Notes

  • Skills cannot rely on ${CLAUDE_PLUGIN_ROOT}; that only expands in slash commands and hooks. A skill that ships a script references it through the skill's announced base directory instead, see skills/tools/conversation-history/SKILL.md.
  • conversation-history reads local files only: ~/.claude/projects, ~/.codex/sessions, and ChatGPT export drops. Nothing leaves the machine.

License

MIT, see LICENSE. The dstack plugin is derived from pstack by Lauren Tan under the same license; its notice is at docs/dstack/LICENSE.

dumkydewilde/agent-skills

Agent skills for Claude Code and Codex: general-purpose tools and the dstack engineering workflow.

HTML

1

25 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

History leakage: a product explaining its own edit history (r/OpenAI)

I got so annoyed by edit history leaking into everything from models desperately trying to prove themselves or oversharing what has been deleted, I had an agent come up with a name for it so I could [create a…

2

Oct 9, 2026

History leakage: a product explaining its own edit history (r/ClaudeAI)

I got so annoyed by edit history leaking into everything from models desperately trying to prove themselves or oversharing what has been deleted, I had Claude come up with a name for it so I could [create a…

2

Oct 9, 2026

README

agent-skills

Agent skills for Claude Code and Codex, shipped as two plugins. Both work in either harness from the same canonical source.

tools

General-purpose utilities.

SkillWhat it does
conversation-historySearch past Claude Code, Claude Desktop, Codex, and ChatGPT conversations from local logs and exports
web-scraperBuild resilient scrapers via a discovery-then-script workflow
field-notesBuild field notes: one sheet, a notebook of them, or a shelf of notebooks. Markdown sources, HTML templates for a swipeable deck on aged paper, the indexes that open it, and image prompts for printed posters

Twelve food sheets on a notebook index, each a drawn mark on pale paper
captioned in typewriter type

What field-notes builds, at the middle size: one notebook of twelve sheets, generated from markdown. The whole shelf is live on dumky.net.

dstack

A working style for non-trivial engineering and writing work. Forked from pstack by Lauren Tan (MIT). docs/dstack/UPSTREAM.md covers what changed in the port and why; docs/dstack/LICENSE carries the upstream MIT notice.

Start with /dstack-mode at the top of a task. It matches the task to a playbook, copies that playbook's steps into a todo list, and routes to the other skills as the steps need them. The rest are situational.

SkillUse it when
dstack-modeDefault entry point for any non-trivial task
principlesThe twenty-two rules the mode works from, one file each
howYou want a walkthrough of how a subsystem works
whyYou want to know why something was built this way
teachYou want to actually understand a change, not just have it summarized
recallYou are resuming work and want your recent context rebuilt
architectCode is about to cross a function boundary and the shape is not settled
arenaYou want N parallel attempts, then the best parts of each
swarmYou want N parallel workers across slices, then one report
interrogateYou have a diff and want several reviewers to try to break it
blast-radiusA small-looking change might break something outside the diff
figure-it-outNo bundled playbook fits, so design a rigorous one
tddA bug has a cheap local test path, so write the failing test first
create-verification-skillThe project has no scripted way to prove app behavior
show-me-your-workYou want a reviewable decision trail for unattended work
reflectA long task landed and the lesson should become a skill edit
authoring-skillsYou are writing or fixing a SKILL.md
no-commentsStrip comments before review
unslopYou are cleaning up writing, removes AI tells
dehistorizeAn artifact narrates its own edit history, strip the leaks
broRestate the last message in plain human language
technical-writingDocs, RFCs, readmes, PR descriptions, commit messages
typescript-best-practicesYou are reading or editing TypeScript
setup-dstackChange which model runs which dstack role

Claude Code also gets two subagents from this plugin, dstack-agent and comment-sicko. The Codex plugin format has no agents key, so those are Claude Code only.

The review panels (interrogate, arena, architect, the how critics) want a second vendor at the table. /setup-dstack writes ~/.claude/dstack-models.md to say which model runs which role. Without that file each skill falls back to its inline default, which is Claude-only.

Install in Claude Code

/plugin marketplace add dumkydewilde/agent-skills
/plugin install tools@agent-skills
/plugin install dstack@agent-skills

Or wire it into ~/.claude/settings.json so it stays available and updates itself:

{
  "extraKnownMarketplaces": {
    "agent-skills": {
      "source": { "source": "github", "repo": "dumkydewilde/agent-skills" }
    }
  }
}

Install in Codex

codex plugin marketplace add dumkydewilde/agent-skills
codex plugin add tools@agent-skills
codex plugin add dstack@agent-skills
codex plugin list --marketplace agent-skills

For local development before pushing, add a clone as a local marketplace from the repo root:

codex plugin marketplace add .
codex plugin add dstack@agent-skills

Layout

agent-skills/
├─ .claude-plugin/marketplace.json       # Claude marketplace manifest
├─ .agents/plugins/marketplace.json      # Codex marketplace manifest
├─ skills/                               # canonical, agent-agnostic source of truth
│  ├─ tools/{conversation-history,field-notes,web-scraper}/
│  └─ dstack/
│     ├─ dstack-mode/                    # router, playbooks, references, scripts
│     ├─ principles/references/          # twenty-two principle files
│     └─ <twenty-two more skills>/
└─ plugins/
   ├─ claude/{tools,dstack}/   (.claude-plugin/plugin.json + skills -> ../../../skills/<name>)
   └─ codex/{tools,dstack}/    (.codex-plugin/plugin.json + real, release-ready skill copy)

The canonical skill files live under skills/<plugin>/<skill-name>/. The Claude plugin symlinks to that source. The Codex/ChatGPT plugin carries a real copy, because their importer ignores symbolic links immediately inside skills/.

Changing a skill

Edit the canonical copy under skills/, never the one under plugins/codex/. Then refresh the release copies and check them:

scripts/sync-plugin-skills.sh
python3 -m unittest discover -s tests -v

The tests check three things. The Codex copy matches the canonical source byte for byte, the Claude symlink points where it should, and every skill has valid frontmatter with resolvable links and no leftover Cursor-only keys. CI runs the same two test modules on every push and pull request.

Adding a whole plugin also means adding its name to the PLUGINS array in scripts/sync-plugin-skills.sh and to PLUGINS in tests/test_codex_plugin_package.py, plus an entry in both marketplace manifests.

Notes

  • Skills cannot rely on ${CLAUDE_PLUGIN_ROOT}; that only expands in slash commands and hooks. A skill that ships a script references it through the skill's announced base directory instead, see skills/tools/conversation-history/SKILL.md.
  • conversation-history reads local files only: ~/.claude/projects, ~/.codex/sessions, and ChatGPT export drops. Nothing leaves the machine.

License

MIT, see LICENSE. The dstack plugin is derived from pstack by Lauren Tan under the same license; its notice is at docs/dstack/LICENSE.