From resume-typesetter
Shared reference for working with JSON Resume schema data and Typst resume templates. Invoke when editing the resume JSON or a Typst template under this plugin, or when the user asks how the pieces fit together.
How this skill is triggered — by the user, by Claude, or both
Slash command
/resume-typesetter:resume-typesetterThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **Data**: a single `resume.json` file conforming to the [JSON Resume schema](https://jsonresume.org/schema/). Optional variants live under `data/variants/<name>.json`.
resume.json file conforming to the JSON Resume schema. Optional variants live under data/variants/<name>.json.templates/<name>/template.typ. Each template reads the JSON via json(sys.inputs.resume) — the path is passed at compile time with --input resume=<path>.<plugin-data-dir>/config.json stores dataRepo (absolute path to the user's resume data repo). The plugin data directory resolves as $CLAUDE_USER_DATA/resume-typesetter/ if CLAUDE_USER_DATA is set; otherwise $XDG_DATA_HOME/claude-plugins/resume-typesetter/ if XDG_DATA_HOME is set; otherwise ~/.local/share/claude-plugins/resume-typesetter/. See the canonical convention in the claude-rudder:plugin-data-storage skill.basics — name, label, email, phone, url, summary, location, profiles[]
work — name, position, url, startDate, endDate, summary, highlights[]
volunteer — organization, position, url, startDate, endDate, summary, highlights[]
education — institution, url, area, studyType, startDate, endDate, score, courses[]
awards — title, date, awarder, summary
certificates — name, date, issuer, url
publications — name, publisher, releaseDate, url, summary
skills — name, level, keywords[]
languages — language, fluency
interests — name, keywords[]
references — name, reference
projects — name, description, highlights[], keywords[], startDate, endDate, url, roles[], entity, type
Dates are ISO 8601 (YYYY-MM-DD or YYYY-MM). Omit endDate for current positions.
A template entry point looks like:
#let resume = json(sys.inputs.resume)
#let basics = resume.basics
= #basics.name
#basics.label
#basics.email · #basics.phone
== Experience
#for job in resume.work {
[*#job.position*, #job.name \\
#job.startDate -- #job.at("endDate", default: "Present") \\
#for h in job.at("highlights", default: ()) [- #h]]
}
Always use .at("key", default: …) for optional JSON Resume fields — strict key access fails if the user hasn't filled in that section.
resume.json. If a user wants a field JSON Resume doesn't cover, discuss adding it to a separate extension file rather than polluting the schema.resume.json when working on a variant, and vice versa.<dataRepo>/renders/, never into the plugin directory.templates/<name>/template.typ.json(sys.inputs.resume)..at(..., default: ...) for optional sections./resume:render <name>.npx claudepluginhub danielrosehill/claude-code-plugins --plugin resume-typesetterSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.