This document plans a separate GitHub repo — claude-code-skills — that exposes a curated subset of the skills in this settings repo as installable Claude Code plugins. It is the working plan for the work itself; after that work lands, this file can be deleted or shortened into a pointer.
Execution note: This plan is designed to be executable from a different machine that has gh installed. Before switching machines, make sure you have committed and pushed from this repo: this file, skills/bibliography-from-ids/examples/verify_cites.py, and skills/bibliography-from-ids/SKILL.md. On the target machine, git pull in ~/.claude first, then follow the runbook at the bottom of this file.
This repo (claude-code-settings) is a personal dotfiles repo. Users clone it whole into ~/.claude to replicate Matthew's environment. A marketplace repo is the opposite shape: a catalog consumed via /plugin install, where users pick individual plugins without touching anyone else's config. Mixing the two confuses the purpose of both, mixes personal config with shareable artifacts, and makes the repo name misleading.
A clean split:
claude-code-settings— personal machine config (this repo, stays as-is).claude-code-skills— public plugin marketplace containing bundled, audited, generic skills.
Per audit, bundling skills by audience produces coherent installs. Matthew prefers bundling over one-plugin-per-skill.
| Plugin | Audience | Skills |
|---|---|---|
research-toolkit |
academics, paper authors | bibliography-from-ids, verify-citation-claims, consolidate-paper, import-content, bayesian-stats |
file-utils |
anyone using Claude Code | read-entire, read-large-md, parse-json |
meta-conversation |
anyone using Claude, contemplative | reflect, debrief, cookie |
claude-code-tools |
Claude Code power users | archive-logs, into-trustable-script |
Dropped (not Matthew's work or not portable):
code-simplifier— not authored by Matthew. Removed from consideration.commit-push-pr,techdebt— symlinks pointing at third-party skills Matthew didn't author. Removed from consideration; the broken symlinks in this repo are a separate cleanup question.run-agent— depends on Matthew's custom agent registry; not portable without it.gpu-task-spooler.md— flat file, not loading as a skill anyway (violates the<name>/SKILL.mdconvention). Very specific to a particular machine's GPU setup.
Note: moving archive-logs out of meta-conversation and pairing it with into-trustable-script in a new claude-code-tools plugin. Both are Claude Code infrastructure skills (log management, permission-system management), distinct from the pure-reflection skills in meta-conversation.
1. Fixed — now uses a bibliography-from-ids/examples/verify_cites.py: hardcoded .tex filename._find_default_tex() helper that auto-discovers the paper's main .tex by searching for \documentclass in paper/*.tex, falling back to paper/main.tex, and always overridable with --tex.
2. Fixed — genericized to "A real incident during paper writing: ..." and "Fail-loud philosophy: never silently skip errors."bibliography-from-ids/SKILL.md lines 16 and 107: narrative references to "Matthew" / "Matthew's CLAUDE.md".
All blockers cleared. Ready to proceed with the marketplace repo.
verify-citation-claimsconsolidate-paperimport-contentread-entireread-large-mdparse-jsonbayesian-statsinto-trustable-scriptdebriefreflectcookie
bibliography-from-ids— fix hardcoded.texpath (see Blockers).archive-logs— add compatibility note about Claude Code log format (the skill reads~/.claude/projects/<encoded-path>/*.jsonl, which is Claude Code–specific). Otherwise clean.read-large-md— optional one-line clarification that the grep technique is tuned for base64-inlined markdown (e.g., Google Docs exports).
run-agent— one-line skill that delegates to a named custom agent. Without Matthew's agents, it has nothing to delegate to.code-simplifier— not authored by Matthew.commit-push-pr,techdebt— not authored by Matthew (upstream skills from a third-party repo).
Mostly from subagent audits; condensed here:
- The research bundle has a coherent theme ("never hand-type data; always script-generate it from authoritative sources").
bibliography-from-idsprevents fabricated metadata,verify-citation-claimsprevents miscited claims,import-contentprevents transcription errors,consolidate-paperstructures the source artifacts,bayesian-statssits slightly outside this theme but serves the same audience. cookiecontains no identifying info; essay is entirely about Mandelbrot sets, octopuses, Portuguese etymology, Curry-Howard, and the Friendship Theorem. Safe.- Several skills assume
uvfor Python package management (per Matthew's global CLAUDE.md). Bundle READMEs should state this as a prerequisite rather than silently rely on it. - All skills with Python dependencies (
bibliography-from-ids,bayesian-stats,archive-logs) should have their dependencies listed in the bundle README.
claude-code-skills/
├── .claude-plugin/
│ └── marketplace.json
├── plugins/
│ ├── research-toolkit/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── README.md
│ │ └── skills/
│ │ ├── bibliography-from-ids/ (SKILL.md + examples/)
│ │ ├── verify-citation-claims/SKILL.md
│ │ ├── consolidate-paper/SKILL.md
│ │ ├── import-content/SKILL.md
│ │ └── bayesian-stats/SKILL.md
│ ├── file-utils/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── README.md
│ │ └── skills/
│ │ ├── read-entire/SKILL.md
│ │ ├── read-large-md/SKILL.md
│ │ └── parse-json/SKILL.md
│ ├── meta-conversation/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── README.md
│ │ └── skills/
│ │ ├── reflect/SKILL.md
│ │ ├── debrief/SKILL.md
│ │ └── cookie/SKILL.md
│ └── claude-code-tools/
│ ├── .claude-plugin/plugin.json
│ ├── README.md
│ └── skills/
│ ├── archive-logs/SKILL.md
│ └── into-trustable-script/SKILL.md
└── README.md
Notes on the layout:
- Each plugin has its own
.claude-plugin/plugin.json(defaults tostrict: true, soplugin.jsonis the component authority). - Skills are copied (not symlinked) into the marketplace repo. This is required — plugins are cached on install, and files outside the plugin directory won't be copied. Any edits during publication become one-time forks of the source skills; if Matthew wants to keep the marketplace and this repo in sync later, a small sync script can push changes between them.
- Marketplace name:
claude-code-skills(kebab-case, not reserved — the reserved list includesclaude-plugins-official,agent-skills, and a handful of others; see the official docs).
Independent of the marketplace, these are pre-existing bugs in this repo worth fixing:
commit-push-prandtechdebtsymlinks are broken on this machine (point at a macOS laptop path). These are third-party skills; either fix the symlink target on each machine separately, or remove them from the shared repo and leave them machine-local.skills/gpu-task-spooler.mdis a flat file and is silently not loading (violates your<name>/SKILL.mdrule). Either convert togpu-task-spooler/SKILL.mdwith proper frontmatter, move to areferences/folder, or delete.- Fix the hardcoded
.texpath inbibliography-from-ids/examples/verify_cites.py(line 27). This affects the source skill in this repo and the published copy equally.
gh repo create AMindToThink/claude-code-skills --private --description "Claude Code skills marketplace"(private per CLAUDE.md convention; Matthew flips to public manually once ready).- Clone locally, scaffold the layout above.
For each skill in the table:
- Copy the entire skill directory into the correct plugin's
skills/folder. - Apply per-skill edits (
bibliography-from-ids,archive-logs,read-large-md). - Sanity check the frontmatter — especially that
description:is specific enough for model-invocation matching, anddisable-model-invocation: trueis preserved where it was set (cookie,archive-logs,run-agent).
Each plugin.json needs at minimum name, description, version. Start everything at 1.0.0.
Each plugin README should list:
- What the plugin does in one paragraph.
- Per-skill one-liner.
- Prerequisites (Python
uv, specific packages, Claude Code version if relevant). - Invocation hints (most skills auto-invoke via description matching;
disable-model-invocation: trueones need a direct/skill-namecall).
Minimal marketplace schema:
{
"name": "claude-code-skills",
"owner": { "name": "AMindToThink" },
"metadata": {
"description": "Curated Claude Code skills for research, file handling, session reflection, and dev workflow",
"pluginRoot": "./plugins"
},
"plugins": [
{ "name": "research-toolkit", "source": "./research-toolkit", "description": "..." },
{ "name": "file-utils", "source": "./file-utils", "description": "..." },
{ "name": "meta-conversation", "source": "./meta-conversation", "description": "..." },
{ "name": "claude-code-tools", "source": "./claude-code-tools", "description": "..." }
]
}Root README:
- What the marketplace is.
- Install instructions:
/plugin marketplace add AMindToThink/claude-code-skillsthen/plugin install <name>@claude-code-skills. - Table of plugins with descriptions.
- Link back to
claude-code-settingsas the upstream source.
From within the new repo:
/plugin marketplace add .
/plugin validate .
/plugin install research-toolkit@claude-code-skills
/plugin install file-utils@claude-code-skills
/plugin install meta-conversation@claude-code-skills
/plugin install claude-code-tools@claude-code-skills
/reload-plugins
Test one skill per plugin to confirm triggers fire. Remove the local marketplace after validation.
- Push to GitHub.
- Matthew flips the repo from private to public.
- Test installation from a clean machine (or a fresh Claude Code instance) using
/plugin marketplace add AMindToThink/claude-code-skills.
Add a new section to claude-code-settings/README.md:
## Installable skills
A curated subset of the skills in `skills/` are published as a plugin marketplace at
[AMindToThink/claude-code-skills](https://github.com/AMindToThink/claude-code-skills).
If you want the skills without the rest of this config:
/plugin marketplace add AMindToThink/claude-code-skills
/plugin install research-toolkit@claude-code-skills # or any of the other plugins
Plugins currently published: `research-toolkit`, `file-utils`, `meta-conversation`, `claude-code-tools`.Only after the marketplace is well-used and polished: submit via claude.ai/settings/plugins/submit. Anthropic reviews for quality/security before listing in the official catalog.
read-large-mdas separate skill vs. merged. Audit suggested splittingfile-utils, but "3 small file helpers" is a fine bundle; I'd keep it.- Secret-scan on publish. Worth running
detect-secrets scanover the new repo before the first public push, as a belt-and-suspenders check on top of the per-skill audits. - Versioning policy. Start everything at
1.0.0. Bump plugin versions independently when that plugin's skills change.
- Plugins are copied to a cache on install (
~/.claude/plugins/cache/). Any../references across plugins will break. None of the audited skills do this, but worth re-checking during copy. - The
archive-logsskill assumes the Claude Code log format. If Anthropic changes that format, the skill breaks silently. The skill README should say so. - The
verify-citation-claimsskill fetches papers from the web — users installing the plugin should be told it uses WebFetch/WebSearch (or equivalent) so they can evaluate trust.
Assumes: ~/.claude/ is a clone of AMindToThink/claude-code-settings, gh is authenticated as AMindToThink, working directory is where you want the new repo to live (e.g., ~/code/).
cd ~/.claude && git pull
cd ~/code # or wherevergh repo create AMindToThink/claude-code-skills --private \
--description "Claude Code skills marketplace" \
--clone
cd claude-code-skills
mkdir -p .claude-plugin
mkdir -p plugins/research-toolkit/.claude-plugin plugins/research-toolkit/skills
mkdir -p plugins/file-utils/.claude-plugin plugins/file-utils/skills
mkdir -p plugins/meta-conversation/.claude-plugin plugins/meta-conversation/skills
mkdir -p plugins/claude-code-tools/.claude-plugin plugins/claude-code-tools/skillsSRC=~/.claude/skills
# research-toolkit
cp -r $SRC/bibliography-from-ids plugins/research-toolkit/skills/
cp -r $SRC/verify-citation-claims plugins/research-toolkit/skills/
cp -r $SRC/consolidate-paper plugins/research-toolkit/skills/
cp -r $SRC/import-content plugins/research-toolkit/skills/
cp -r $SRC/bayesian-stats plugins/research-toolkit/skills/
# file-utils
cp -r $SRC/read-entire plugins/file-utils/skills/
cp -r $SRC/read-large-md plugins/file-utils/skills/
cp -r $SRC/parse-json plugins/file-utils/skills/
# meta-conversation
cp -r $SRC/reflect plugins/meta-conversation/skills/
cp -r $SRC/debrief plugins/meta-conversation/skills/
cp -r $SRC/cookie plugins/meta-conversation/skills/
# claude-code-tools
cp -r $SRC/archive-logs plugins/claude-code-tools/skills/
cp -r $SRC/into-trustable-script plugins/claude-code-tools/skills/Only one skill needs a content edit after copying (optional compatibility note). Do this with an editor, not sed:
plugins/claude-code-tools/skills/archive-logs/SKILL.md: add a note near the top that this skill assumes Claude Code's log-format convention at~/.claude/projects/<encoded-path>/*.jsonl, which may change across Claude Code versions.
Optional:
plugins/file-utils/skills/read-large-md/SKILL.md: add a one-line note that the grep technique is tuned for base64-inlined images (e.g., Google Docs exports).
Each goes at plugins/<name>/.claude-plugin/plugin.json. Start all at version 1.0.0.
// plugins/research-toolkit/.claude-plugin/plugin.json
{
"name": "research-toolkit",
"description": "Skills for academic paper authoring: bibliography from identifiers, citation claim verification, paper consolidation, script-generated content import, and Bayesian-stats conversion.",
"version": "1.0.0",
"author": { "name": "AMindToThink" },
"license": "MIT",
"keywords": ["research", "academic", "bibtex", "citations", "statistics"]
}// plugins/file-utils/.claude-plugin/plugin.json
{
"name": "file-utils",
"description": "Small helpers for reading files the built-in Read tool can't handle well: read entire files without chunking, read large markdown with base64 images, inspect unknown JSON structure.",
"version": "1.0.0",
"author": { "name": "AMindToThink" },
"license": "MIT",
"keywords": ["files", "json", "markdown"]
}// plugins/meta-conversation/.claude-plugin/plugin.json
{
"name": "meta-conversation",
"description": "End-of-conversation skills for reflection and collaboration quality: reflect (internal self-review), debrief (user-facing tips + Claude's perspective), cookie (an end-of-session gift for Claude).",
"version": "1.0.0",
"author": { "name": "AMindToThink" },
"license": "MIT",
"keywords": ["reflection", "debrief", "meta"]
}// plugins/claude-code-tools/.claude-plugin/plugin.json
{
"name": "claude-code-tools",
"description": "Skills for managing Claude Code infrastructure: archive session logs into the project with secret scanning, and convert approved commands into permanently-allowlisted scripts.",
"version": "1.0.0",
"author": { "name": "AMindToThink" },
"license": "MIT",
"keywords": ["claude-code", "logs", "permissions"]
}// .claude-plugin/marketplace.json
{
"name": "claude-code-skills",
"owner": { "name": "AMindToThink" },
"metadata": {
"description": "Curated Claude Code skills for research, file handling, session reflection, and Claude Code tooling.",
"version": "1.0.0",
"pluginRoot": "./plugins"
},
"plugins": [
{
"name": "research-toolkit",
"source": "./research-toolkit",
"description": "Bibliography from IDs, citation verification, paper consolidation, script-generated imports, Bayesian stats."
},
{
"name": "file-utils",
"source": "./file-utils",
"description": "read-entire, read-large-md, parse-json."
},
{
"name": "meta-conversation",
"source": "./meta-conversation",
"description": "reflect, debrief, cookie."
},
{
"name": "claude-code-tools",
"source": "./claude-code-tools",
"description": "archive-logs, into-trustable-script."
}
]
}Minimum content (flesh out to taste):
# claude-code-skills
A plugin marketplace for Claude Code. A curated subset of skills authored for academic research, file handling, conversation reflection, and Claude Code tooling.
## Install
/plugin marketplace add AMindToThink/claude-code-skills
Then install any of:
/plugin install research-toolkit@claude-code-skills
/plugin install file-utils@claude-code-skills
/plugin install meta-conversation@claude-code-skills
/plugin install claude-code-tools@claude-code-skills
## Plugins
| Plugin | Skills | For |
|---|---|---|
| `research-toolkit` | bibliography-from-ids, verify-citation-claims, consolidate-paper, import-content, bayesian-stats | Academic paper authoring |
| `file-utils` | read-entire, read-large-md, parse-json | Anyone |
| `meta-conversation` | reflect, debrief, cookie | End-of-session reflection |
| `claude-code-tools` | archive-logs, into-trustable-script | Claude Code power users |
## Upstream
These skills also live (with personal config) at
[AMindToThink/claude-code-settings](https://github.com/AMindToThink/claude-code-settings).Each plugin should also have a short plugins/<name>/README.md describing its skills' prerequisites (specifically: research-toolkit and claude-code-tools assume Python with uv; archive-logs additionally needs detect-secrets).
From inside the new repo:
# Secret scan as a belt-and-suspenders check
pipx run detect-secrets scan . > /tmp/detect-secrets.json
# Inspect /tmp/detect-secrets.json; expect no real secrets
# Validate inside Claude Code
# /plugin validate .
# /plugin marketplace add .
# /plugin install research-toolkit@claude-code-skills
# (repeat for the other three)
# /reload-plugins
# Test one skill per plugin to confirm triggers firegit add .
git status # sanity check
git commit -m "Initial marketplace with research-toolkit, file-utils, meta-conversation, claude-code-tools"
git push -u origin mainFlip the repo visibility from private to public on GitHub's UI.
Back in ~/.claude/, add the "Installable skills" section to README.md (see Step 8 in the main plan above), commit and push.
From any machine (or after rm -rf ~/.claude/plugins/cache):
/plugin marketplace add AMindToThink/claude-code-skills
/plugin install research-toolkit@claude-code-skills
/reload-plugins
Confirm at least one skill from each plugin triggers when relevant.