How /expand Enriches Your Profile by Scanning GitHub, Kaggle, and Course Syllabi
The /expand command automatically discovers and adds skills to your candidate profile by parsing public URLs like GitHub repositories, Kaggle notebooks, and course syllabi to surface implicit competencies not explicitly declared in your .claude/skills files.
The ai-job-search repository by MadsLorentzen provides a suite of tools to streamline job applications through AI-assisted profile management. The /expand command serves as a competency-enrichment engine that scans your linked public resources to identify hidden skills. This functionality ensures your profile reflects the full breadth of your technical capabilities by extracting evidence from real-world artifacts.
How the /expand Workflow Works
Gathering Public URLs from the Source List
During the initial /setup phase, you attach a list of public URLs to your profile. These URLs are stored in the profile's source list, which acts as the foundation for enrichment. Sources typically include GitHub repositories, portfolio websites, Kaggle notebooks, and Google Scholar pages.
Fetching and Parsing Content
When you invoke /expand, the system iterates through the source list and fetches each URL. It extracts textual content from README files, notebook cells, project descriptions, and publication abstracts. According to the source code in /.claude/commands/expand.md, this parsing phase prepares raw text for skill detection.
Detecting Skill Signals
A lightweight NLP pipeline scans the extracted content for skill-related phrases. The system identifies mentions of technologies like "TensorFlow", methodologies like "data-augmentation", and specialized techniques like "SQL query optimization". The tools/lint_skills.py utility normalizes and validates these discovered skill strings to ensure consistency.
Course Syllabi Lookup
For every named course or certification in your profile, /expand queries publicly available syllabi from university course pages or platforms like Coursera and Open Learn. This process pulls official learning objectives to map formal education to specific competencies.
Adding Competencies with Source Annotations
Each new skill is appended to the profile with strict source attribution. Annotations follow the format *(GitHub — my-nlp-project)* or *(Coursera — Deep Learning Specialisation)*, as documented in /.claude/skills/job-application-assistant/01-candidate-profile.md. This idempotent approach ensures repeated runs only add truly new signals without duplication.
Implementation and Usage Examples
The /expand command can be invoked via the CLI after completing the setup process:
# After /setup has linked your public profiles:
> /expand
Scanning 4 sources …
GitHub repo "ai‑job‑search": detected Python, LaTeX, Pandas, LLM prompting
Kaggle notebook "salary‑prediction": detected feature‑engineering, XGBoost
Course “Deep Learning Specialisation”: added TensorFlow, CNN, RNN
✅ /expand found 23 new competency signals across 5 sources
You can also use the functionality programmatically within a Claude skill:
# Programmatic usage (inside a Claude skill)
from .commands import expand
profile = load_profile()
new_skills = expand.run(profile) # returns list of (skill, source) tuples
profile.add_skills(new_skills)
save_profile(profile)
Key Files and Their Roles
Several components work together to power the enrichment process:
-
/.claude/commands/expand.md– Contains the full command documentation, including the output format and source-annotation guidelines. Line 126 specifically handles the summary report generation, printing results like "Found 23 new competency signals across 5 sources". -
README.md– Line 141 describes the purpose of/expandand the public sources it scans. -
/.claude/skills/job-application-assistant/01-candidate-profile.md– Stores the extracted competencies in the candidate profile structure with proper source attribution. -
documents/– Serves as a repository for career source materials that/expandcan read, including PDFs and syllabi. -
tools/lint_skills.py– Validates and normalizes discovered skill strings before they are added to the profile.
Summary
/expandautomates skill discovery by scanning GitHub, Kaggle, and course syllabi linked during/setup.- The command uses a lightweight NLP pipeline to detect skill signals from textual content in public repositories and notebooks.
- Course syllabi lookups map formal education to specific competencies by querying official learning objectives.
- Source annotations like
*(GitHub — repo-name)*ensure idempotency and traceability for every added skill. - The system reports results such as "Found 23 new competency signals across 5 sources" to provide transparency on enrichment activities.
Frequently Asked Questions
What types of URLs can /expand analyze?
The command supports any public URL containing skill-relevant text, including GitHub repositories, Kaggle notebooks, portfolio websites, Google Scholar pages, and course syllabi hosted on university pages or learning platforms like Coursera and Open Learn.
How does /expand prevent duplicate skills from being added?
Each skill is annotated with its source origin using formats like *(GitHub — project-name)* or *(Coursera — Course Title)*. This annotation system makes the enrichment idempotent, meaning subsequent runs only add skills that haven't been previously recorded in /.claude/skills/job-application-assistant/01-candidate-profile.md.
Can I use /expand programmatically instead of via CLI?
Yes. You can import the expand module and call expand.run(profile), which returns a list of (skill, source) tuples that you can programmatically add to your profile using standard profile management methods.
Where are the extracted competencies stored in the repository?
All extracted skills are stored in /.claude/skills/job-application-assistant/01-candidate-profile.md, following the annotation standards defined in the command documentation at /.claude/commands/expand.md.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →