add-portal
CommandYou are helping the user build a job-portal search skill for a job board in their market. The repo ships worked examples of the…
You are helping the user register their own CV or cover letter template with the AI Job Search framework — LaTeX, Typst, or any other toolchain that compiles to PDF from the command line. The framework ships with moderncv (banking style) for CVs and a custom `cover.cls` for
$ npx -y skills add ai-job-search-dev/ai-job-search --agent claude-code
You are helping the user register their own CV or cover letter template with the AI Job Search framework — LaTeX, Typst, or any other toolchain that compiles to PDF from the command line. The framework ships with moderncv (banking style) for CVs and a custom `cover.cls` for cover letters. This command lets the user swap in their own template: store the template files, capture usage instructions (source extension, compile command, fonts, style rules, page limits), verify the template compiles, and wire it into the `/apply` workflow so every future application uses it.
`$ARGUMENTS` may contain a subcommand, a file path, or nothing.
Follow these steps **in order**.
---
Use Glob with `templates/**/TEMPLATE.md` to find registered templates. For each, read the manifest and print a table:
## Registered Templates | Name | Type | Source | Toolchain | Fonts | Active | |------|------|--------|-----------|-------|--------| | <name> | CV / Cover letter | .tex/.typ/... | lualatex/typst/... | <main font> | yes/no |
A template is **active** if `05-cv-templates.md` (CV) or `06-cover-letter-templates.md` (cover letter) contains an `ACTIVE-TEMPLATE` managed block naming it. If no custom templates exist, say so and explain that `/add-template` registers one. Stop here.
If `$ARGUMENTS` contains `--use <name>`:
1. If `<name>` is `default`, skip template resolution and continue to Step 5 with `default` as the activation target. 2. Use Glob with `templates/**/TEMPLATE.md` and find manifests whose parent folder name exactly matches `<name>`. 3. If no manifest matches, stop and say the template is not registered. Suggest `/add-template --list` to see available names. 4. If more than one manifest matches, stop and list the matching manifest paths. Ask the user to rename one of the templates; activation must be unambiguous. 5. Read the matching `TEMPLATE.md` and extract:
6. Derive the template folder from the manifest path and verify `template<source-extension>` exists in the same folder. If it is missing, stop with an error; the template registration is incomplete. 7. Derive `<type>` for Step 5 from the manifest path:
8. Continue to Step 5 using the resolved `<name>`, `<type>`, `<source-extension>`, `<compile-command>`, engine/toolchain label, font summary, page limit, template skeleton path, and manifest path. Do not re-run Steps 1-4; `--use` switches an already-registered template.
---
Ask the user (skip anything already answered by `$ARGUMENTS`):
1. **Type:** Is this a **CV** template or a **cover letter** template? 2. **Source:** Where is the template? Accept any of:
Read every provided file. If the template references an include the declared toolchain doesn't ship by default — a custom `.cls`/`.sty` not part of standard TeX distributions, a Typst package imported via a local `#import`, or an equivalent for another toolchain — confirm the user has the file and ask for it if missing — the template cannot compile without it.
---
Interview the user for the metadata that `/apply` needs to use the template correctly. Infer as much as possible from the source first (LaTeX: documentclass, `\fontspec` calls, geometry, colors; Typst: `#set`/`#show` rules, `#import`s; other toolchains: whatever the format exposes) and present your inferences for confirmation rather than asking blind questions.
Collect:
1. **Name** - short kebab-case identifier (e.g. `awesome-cv`, `classic-serif`). Must not collide with an existing folder in `templates/`. 2. **Source extension** - the main file's extension (`.tex`, `.typ`, ...), inferred from the provided source file. 3. **Compile command** - the full command `/apply` and Step 4's test compile will run, using `<file>` (no extension) as the placeholder for the output basename:
**Build directory rule:** if the toolchain can redirect its intermediate files, the declared command sends them to a `build/` folder beside the source, and still leaves the PDF next to the source, where `/apply` reads it. For LaTeX, use `-output-
The job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
You are helping the user build a job-portal search skill for a job board in their market. The repo ships worked examples of the…
You are orchestrating a two-agent job application workflow. The job posting is provided below as `$ARGUMENTS` (either a URL or…
You are enriching the candidate profile by discovering competencies hidden in documents and public online presence. This command…
You are scanning the user's Gmail for status signals on tracked job applications (interview invites, assessment links, offers,…
Generate a self-contained HTML dashboard from `job_search_tracker.csv` and the application archives under…
You are preparing the user for a real, scheduled interview on one of their applications. The frameworks for this already exist -…
Install pitchcraft skill for structured persuasion and executive reporting
Generate PDF documents (resume, cover letter, or both) with automatic validation and theme selection | argument-hint:…
Collect job-posting URLs into ~/.dear-hiring-manager/urls.txt by running your Apify job scraper, for /batch.