A template for building a data science portfolio with Quarto, Python, and an AI coding assistant. You end with a live website that shows your projects, your skills, and how you think.
- Use this template. On GitHub click Use this template, then Create a new repository (name it something like
portfolio). Clone it. - Install tools (once):
- Install dependencies:
uv sync - Preview the site:
uv run quarto preview - Open your assistant in this folder and say: "Use the setup-portfolio skill."
- Publish: push to
main. In your repo go to Settings, Pages, Source and choose GitHub Actions. Your site appears athttps://<username>.github.io/<repo>.
| Page | Purpose |
|---|---|
| Home | Short pitch and your 3 featured projects |
| Projects | One page per project: problem, approach, result |
| Skills | Filter projects by skill. Every skill is backed by evidence |
| Writing | Optional posts about what you learned |
| About | Who you are and how to reach you |
Skills (playbooks) live in .agents/skills/. Ask your assistant to use them by name:
| Skill | Use it to |
|---|---|
setup-portfolio |
Replace the template placeholders with your info |
new-project |
Turn work you did into a project page |
new-post |
Start a blog post |
polish-writing |
Get editing feedback in your own voice |
brand-site |
Pick colors and fonts from vetted presets, with a contrast check |
portfolio-review |
Get a hiring-manager critique |
check-site |
Verify the site is ready to publish |
Read guide/ai-workflow.md first. The rule is simple: the AI helps you write and debug, but every claim on the site must be true and something you can explain.
AGENTS.md holds the rules the assistant follows (never invent facts, keep your voice, teach as it goes).
uv run quarto preview # live preview
uv run quarto render # build to docs/
uv run python scripts/check_site.py # leftover placeholders, thin projectsCode output is saved in _freeze/. Commit it so the publish workflow does not need to execute your code. If you change a code cell, re-render locally first.
- Colors and fonts:
_brand.yml - Site title, nav, links:
_quarto.yml - Extra CSS:
styles.css
The marimo Quarto extension is installed in _extensions/. Use {python.marimo} cells in a project page if you want reactive widgets. Not needed for a good portfolio.
The previous version of this repo (a plain Quarto blog with a marimo post script) is on the historical branch.