Shared Resume Workflow
This is the shared, agent-neutral definition of the resume workflow.
Use it when you need to:
- improve an existing resume draft;
- turn project notes or raw material into resume content;
- select a template before intake;
- run structured guided intake for missing fields;
- keep the workflow reusable across Claude and non-Claude agents.
Core rule
This installed skill bundle is self-contained.
When the skill is installed correctly, this directory should contain:
template_catalog_cli.pytemplate_store_cli.pyagent_intake_cli.pyhost_cli.pyrender_cli.pyresume_runtime/resume_core/examples/
Treat the bundled resume_runtime/ under this skill directory as the primary shared interface.
Use these public entrypoints:
template_catalog_cli.py— list built-in and stored templates and derivetemplate_contexttemplate_store_cli.py— save personal templates and promote candidate templatesagent_intake_cli.py— host-facing outer intake entrypointhost_cli.py— lower-level structured session controlrender_cli.py— render markdown/html/css output bundles from a manifest and profile
Equivalent bundled module paths also exist under:
resume_runtime/template_catalog_cli.pyresume_runtime/template_store_cli.pyresume_runtime/agent_intake_cli.pyresume_runtime/host_cli.pyresume_runtime/render_cli.py
Claude-specific wrappers under .claude/skills/resume/ are compatibility adapters, not the primary shared contract.
Recommended workflow
1. Choose the template first
Before parsing materials or asking for missing information, choose a template.
- In the installed skill bundle, built-in template manifests live under
resume_core/examples/templates/ - Built-in template assets, including CSS, live under
resume_core/examples/template-assets/ - The current built-in templates are
typora-classicandmarkdown-basic - load built-in and stored templates through
template_catalog_cli.py - read
asset_pathsfrom the catalog CLI response when you need the concrete markdown/html/css file locations for a template - show template cards with template id, style, use cases, and required-content summary
- let the user choose a built-in template, a stored template, upload a new template, or ask for a derivative template
- once a template is chosen, use the returned
manifest+ derivedchecklistas thetemplate_contextforagent_intake_cli.py
If you know the absolute path of this installed skill directory, enumerate built-in templates with:
python3 /path/to/installed/skill/template_catalog_cli.py
If you are already in the installed skill directory, you can also run:
python3 template_catalog_cli.py
If you are developing inside this repository root, the bundled entrypoint is:
python3 skills/resume/template_catalog_cli.py
You can still override the defaults when needed:
python3 /path/to/installed/skill/template_catalog_cli.py \
--examples-root /path/to/installed/skill/resume_core/examples \
--generated-at 2026-04-16T12:00:00Z
If you need to inspect a built-in template directly, start from:
resume_core/examples/templates/typora-classic.v1.jsonresume_core/examples/templates/markdown-basic.v1.jsonresume_core/examples/template-assets/typora-classic/style.cssresume_core/examples/template-assets/markdown-basic/style.css
Do not assume the template files live beside skills/resume/SKILL.md. The skill file defines the workflow; the built-in template manifests and assets live in the repository paths above.
2. Choose the content path after template selection
Use one of these paths:
- direct content entry
- parsing existing materials
- follow-up questioning only for missing template-required fields
If the work is straightforward rewrite/polish, stay in direct editing. If the work depends on structured intake state, missing-field projection, or follow-up rounds, route through the public intake/session CLIs.
3. Use the public intake flow for structured collection
For structured intake and follow-up:
- call
resume_runtime/agent_intake_cli.pyas the public outer entrypoint - provide
template_contextwhen a template has already been chosen - let the runtime decide whether the turn should stay freeform, ask for material, parse material, continue a structured session, or hand off to drafting
- only ask the current batch of questions materialized by the runtime
- at the recommended-only boundary, collect only a yes/no continuation decision
4. Draft against the selected template
When enough information is available:
- produce the resume draft that matches the selected template’s required structure
- localize section headings, field labels, and fixed template copy to match the user’s language; Chinese requests should render Chinese labels by default
- preserve evidence-based wording and truthful ownership
- list any remaining missing facts explicitly instead of guessing
5. Render final template artifacts through the public renderer
When a profile is ready:
- use
resume_runtime/render_cli.pyor the shared rendering helpers - generate markdown/html/css outputs from the selected manifest and profile
- treat these rendered assets as the portable output bundle for host integrations and Typora-first preview flows
Host-neutral request shape
When calling resume_runtime/agent_intake_cli.py, use the public request envelope documented in README.md and this shared skill.
At minimum, expect these concepts:
versionturn- optional
template_context - optional
materials - optional
drafting_started
Output expectations
A good run should usually produce:
- a selected template or template decision
- a filled or partially filled profile
- a clear missing-information list when facts are still absent
- a resume draft or rendered output bundle when enough information is present
Boundary rule
Shared workflow logic belongs in resume_runtime/ and shared docs like this file.
Agent-specific prompt shaping belongs in that agent’s adapter layer.