This repository stores personal Codex skills in a scalable directory layout.
SKILL/
├── README.md
├── skills/
│ ├── infrastructure/
│ ├── automation/
│ ├── writing/
│ ├── research/
│ └── content/
│ └── <skill-name>/
│ ├── SKILL.md
│ ├── references/ (optional)
│ ├── scripts/ (optional)
│ └── assets/ (optional)
└── templates/
├── SKILL.template.md
└── SKILL.with-references.template.md
- Place real skills only under
skills/. - Group skills by a stable domain such as
infrastructure,writing,research, orautomation. - Each skill should live in its own directory and contain a single required
SKILL.mdfile plus optionalagents/,references/,scripts/, orassets/subdirectories. - Keep
templates/for reusable skeletons only. Files in this directory are not treated as active skills. - Avoid storing credentials, tokens, or machine-specific secrets in skill files.
- Prefer one skill per directory, even when the first version is only a single
SKILL.md. - Use domain folders only as stable classification buckets; do not encode transient project names into the domain level.
Repeated shell workflows, CLI procedures, scripting playbooks.
| Skill | Purpose |
|---|---|
session-handoff |
Produce a self-contained handoff prompt for another agent when the user wants to delegate continued work |
session-to-skill-and-blog |
Productize a completed engineering session as a paired skill (in this repo) and a published blog post that links to it |
working-summary |
Work summary / 周报 from GitHub PRs/commits and optional Linear trackers; markdown output for notes (e.g. Obsidian) |
Structured writing, publishing, editorial workflows.
| Skill | Purpose |
|---|---|
generate-design-md |
Produce DESIGN.md for a brand/site from live CSS and tokens (awesome-design-md format) |
holding-analytical-judgment |
Keep analysis grounded in evidence; do not flip conclusions for mood alone (code review, diagnosis, post-mortems) |
Deployment, servers, databases, containers, observability.
| Skill | Purpose |
|---|---|
capture-output-via-sidechannel |
Capture stdout/stderr from runners/CI/containers when log retrieval is unavailable, by persisting output to a readable data store |
ci-smoke-needs-real-deps |
Fix CI release smoke tests that fail after a stack migration by aligning service containers and env vars with ci.yml |
cloudflare-r2-upload |
Upload files/batches to Cloudflare R2 via wrangler, resolve multi-account context, set MIME, and verify public URLs |
dokploy-api-cli |
Operate Dokploy deployments via REST API — create/update/deploy services, switch sources, script redeploys |
dokploy-internal-oneshot |
Run ephemeral one-shot tasks inside a Dokploy project's internal network without exposing services publicly |
dokploy-traefik-traffic-split |
Canary two backends on one Dokploy domain with path-aware weighted+sticky Traefik routing; covers SPA asset trap, dry-run on canary host, and instant rollback |
mx-space-remote-db-access |
Remote mx-space MongoDB inspection, guarded updates, and verification through ssh → docker exec → mongosh |
mx-space-remote-translation-audit |
Remote translation auditing — coverage checks, freshness interpretation, and route-level verification |
vless-reality-aws-lightsail |
End-to-end VLESS+Reality+Vision on AWS Lightsail: Xray server with publicly-trusted SNI selection, Alpine LXC sing-box SOCKS5 bridge for LAN clients, and Surge proxy/policy-group wiring |
Data analysis, report generation, conversation mining.
| Skill | Purpose |
|---|---|
chat-export-report |
Analyze massive exported chat logs (WeChat / Telegram / iMessage / QQ) and produce layered, drill-downable reports grounded in original quotes |
Site-specific publishing, content operations, media handling.
| Skill | Purpose |
|---|---|
acg-character-settei |
Generate ACG character settei sheet (multi-view + expression + callouts) from a reference image via Gemini |
chibi-sticker-sheet |
Generate a 4×8 chibi sticker sheet from a character reference via Gemini, with alpha keying and 1:1 cell slicing |
gemini-image-generation |
Gemini text-to-image and image-to-image generation — style transfer, character consistency, watermark removal |
gemini-seo-image-assets |
Generate favicon/OG artwork via Gemini, export icon variants, and wire SEO metadata |
Skills are loaded by Copilot CLI (.agent/) and Claude Code (.claude/) via flat symlinks directly under their respective skills/ directories. Each agent expects skills at exactly one level deep: .agent/skills/<skill-name>/SKILL.md.
.agent/skills/
└── <skill-name> -> ../../skills/<domain>/<skill-name> ← flat symlink
.claude/skills/
└── <skill-name> -> ../../skills/<domain>/<skill-name> ← flat symlink
⚠️ Do not symlink the entireskills/directory — agents will not discover nested subdirectories.
- Create a new directory under
skills/<domain>/<skill-name>/. - Copy
templates/SKILL.template.mdinto that directory asSKILL.md. - Fill in the frontmatter and keep the body concise.
- Add optional
references/,scripts/, orassets/only when they materially improve reuse. - Add an entry to the corresponding domain table in this README.
- Create flat symlinks in both
.agent/skills/and.claude/skills/:ln -sf ../../skills/<domain>/<skill-name> .agent/skills/<skill-name> ln -sf ../../skills/<domain>/<skill-name> .claude/skills/<skill-name>
- Directory names should use lowercase kebab-case.
- Skill
namevalues should be stable and descriptive. - Prefer names that state both target and action, such as
mx-space-remote-db-accessorarticle-publish-checklist.
A pre-commit hook in .githooks/pre-commit enforces the rules above: every skill under skills/<domain>/<name>/SKILL.md must have a README entry and matching flat symlinks under .agent/skills/ and .claude/skills/. Orphan symlinks fail the hook too.
Enable it once per clone:
git config core.hooksPath .githooksIf you must bypass it for a non-skill commit, use git commit --no-verify.