Install
openclaw skills install liber8Manage recurring personalized job searches, analyze CVs, generate tailored application packs, and deliver ranked opportunity pipelines with DOCX attachments.
openclaw skills install liber8Liber8 is a recurring opportunity-discovery workflow for one person. The skill now includes its own runnable path:
scripts/bootstrap_liber8.py to create the user-local workspacescripts/liber8_pipeline.py to run deterministic discovery, filtering, dedupe, and pack generationscripts/render_recurring_prompt.py to generate the exact prompt used by a Liber8 recurring runassets/templates/ for profile, resume, and recurring-run notesLiber8 has no skill-specific API keys. It should use capabilities already available in the user's OpenClaw environment.
Expected environment:
If delivery or drafting capability is not configured, Liber8 should still work locally. Do not ask the user to paste secrets into prompts or store credentials inside the skill.
Keep Liber8 scoped to the user-approved Liber8 workspace and its own recurring run. In scope:
Out of scope unless the user explicitly asks:
scripts/bootstrap_liber8.py.scripts/liber8_pipeline.py manually once.summary.txt, manifest.json, and generated pack files.Use this path instead of relying on an external proof-of-concept script:
scripts/bootstrap_liber8.py --workspace <workspace> --skill-root <skill-root> once.liber8/config/profiles/<name>.json.liber8/config/resumes/<name>.txt.python <skill-root>/scripts/liber8_pipeline.py --profile <profile-json> --resume <resume-txt> --state-dir <workspace>/liber8/state --output-dir <workspace>/liber8/outputliber8/output/summary.txtliber8/output/manifest.jsonliber8/output/python <skill-root>/scripts/render_recurring_prompt.py --skill-root <skill-root> --workspace <workspace> --profile <profile-json> --resume <resume-txt> --state-dir <workspace>/liber8/state --output-dir <workspace>/liber8/outputWhen first setting up Liber8 for a user, make onboarding conversational and stepwise. Do not dump a large questionnaire all at once. Ask one question at a time, pause for the answer, then ask the next most relevant question.
Start by helping the user provide a resume/CV in whichever form is easiest for them:
For the local-directory path, do not ask the user to invent a file path. Instead, tell them to use the fixed Liber8 intake folder:
liber8/inbox/This inbox can be used for:
Then ask them for the filename, or let them simply say "done" if there is only one obvious relevant file there.
If the user has not provided a resume yet, do not continue into deep search configuration. First resolve resume intake. If needed, help them populate the resume template incrementally.
After resume intake, gather the rest in small steps rather than one big form. A good order is:
Write the answers into the generated profile file as you go.
Then:
9. extract employer names from the user's resume
10. infer likely competitors of those employers
11. run scripts/search_source_candidates.py to discover candidate source sites from target employers, resume employers, and likely competitors
12. show those candidate sources to the user and let them exclude any they do not want, keep the ones they do want, and add any extra sources manually
13. add the selected sources to the profile/source registry
14. run a manual first pass
15. review the shortlist with the user before enabling automation
16. ask for feedback on the shortlist: which roles felt promising, which felt off-target, which employers/titles/locations/themes should be favoured or avoided
17. write that feedback into the profile so future runs sharpen ranking and source selection
Liber8 should search in layers.
If a user shares a role URL:
If a user drops a JD / role file into liber8/inbox/:
If a user shares a target employer:
After each meaningful shortlist review, ask brief feedback questions such as:
Use the answers to update the feedback section of the profile rather than keeping them as loose chat context.
A successful Liber8 run should produce local files even with no outbound delivery configured:
summary.txt -> concise shortlistmanifest.json -> structured run outputIf the user configures delivery and the chosen channel supports attachments, Liber8 should prefer attaching generated pack files such as DOCX and Markdown. If the chosen channel does not support attachments, send the shortlist and include local file paths instead.
If the host environment has a suitable AI model, Liber8 may use it for stronger cover-letter or CV refinement. If not, the bundled pipeline should still produce deterministic local draft packs. Do not require a model-specific credential owned by the skill. Do not invent facts.
Only create recurring automation when the user explicitly asks for it.
That automation should call the bundled pipeline script with the user's profile/resume/state/output paths.
Use scripts/render_recurring_prompt.py to generate the exact agent-turn text for the recurring run so the automation path stays consistent with the manual path.
Default recurring behavior to local-only reporting unless the user has explicitly configured a delivery destination.
Do not inspect or modify unrelated scheduler entries.
Prefer sandbox or test-workspace validation before enabling recurring runs.
scripts/bootstrap_liber8.pyscripts/liber8_pipeline.pyscripts/render_recurring_prompt.pyscripts/search_source_candidates.pyassets/templates/profile.template.jsonassets/templates/resume.template.txtassets/templates/source-registry.template.jsonassets/templates/recurring-run-notes.txtassets/examples/sample-profile.jsonassets/examples/sample-resume.txtreferences/liber8-setup-and-ops.md