feat: AI resume authoring skills (JD → tailored resume.json)#1
Merged
Conversation
Skill-only authoring layer atop the existing publisher: intake-profile bootstraps profile/master.json (interview or PDF/CV/LinkedIn import), tailor-resume produces JD-ranked resumes/<co>/resume.json views with a suggest-but-mark [VERIFY] policy enforced by validate.mjs. Build/deploy pipeline untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an AI authoring layer on top of the existing JSON Resume publisher. Two Claude Code skills turn a job description into a tailored, schema-valid
resume.json, backed by a machine-enforced honesty gate. The existing build/deploy/delete pipeline is untouched.intake-profileskill — builds the canonicalprofile/master.json(full career history) by interviewing the user or importing an old PDF/CV/LinkedIn export.tailor-resumeskill — readsmaster.json+ a JD and writesresumes/<company>/resume.jsonas a pruned, JD-ranked view of the master, reporting JD gaps in chat.[VERIFY].scripts/validate.mjsfails on schema errors and on any surviving[VERIFY]marker, so unverified claims can't deploy. Canonical behavior lives in one sharedtailoring-rules.md.schema/resume.schema.json(accepts the repo's legacycompany/websitefields),validate-core.mjs(unit-tested),validate.mjsCLI, plus a CIvalidatejob gatingbuildand a PRvalidate.yml.profile/master.example.json, anexamples/worked example (master → JD → tailored output, faithful &[VERIFY]-free),CLAUDE.mdconventions, and a README "AI Authoring" section.Design spec and implementation plan included under
docs/superpowers/.Why master-as-source-of-truth: a single canonical history prevents drift across per-company resumes; each tailored file is derived, never the origin.
Test Plan
npm test— 6/6 unit tests pass (validate-core: schema validation +[VERIFY]path scanning, incl. root-string and multi-marker cases)npm run validate— 3/3 documents valid (sample, master.example, expected-resume), exit 0[VERIFY]gate verified: a resume with a surviving marker fails validation (exit 1) with the offending path reportedci.ymlchange is the newvalidatejob +buildneeds:edit;deploy/deleteand allscripts/*.shunchangedexamples/expected-resume.jsonlives outsideresumes/so the deploy trigger never publishes itSKILL.mdfiles +tailoring-rules.mdfor the honesty policy wording🤖 Generated with Claude Code