Kumu / Reference / Portfolio repo

The portfolio repo standard

One public repository, named for you, holding every engagement you complete. It is organized the way a working consultant's practice is organized — capabilities you can do, and engagements that prove you did them — rather than by class, semester, or assignment.

Course-shaped folders are a school concept and they stop meaning anything at graduation. This shape does not: the same skeleton holds a class project, a consulting engagement, and a work sample you send an employer.

Reference — course-independent Set up once, used by every engagement

The structure

Create the repository under your own account, name it firstname-lastname, and set visibility to public. A portfolio nobody can open is not a portfolio.

firstname-lastname/
  README.md            your bio + the index of engagements
  AGENTS.md            your AI conventions — the canonical file
  CLAUDE.md            one line pointing to AGENTS.md
  prompt-log.md        the running record of AI sessions that mattered
  .gitignore           what must never enter the history
  capabilities/        one folder per capability
    marginal-analysis/
      README.md        what the capability is + which engagements exercised it
      spec.md          the method: model design, named ranges, formula logic
      model.xlsx       starts as a template, becomes your model
  docs/
    briefs/            BEFORE the work: scope + hypothesis
    decisions/         AFTER the work: the recommendation, to an audience
  data/                sourced inputs, with provenance
  analysis/            the findings
    figures/           charts the findings refer to
  models/              Performance Ratios only: templates/ and builds/

Git does not track empty folders. Create each directory with a one-line README.md inside it, or create it in the stage that first puts something there.

GitHub warns on any file over 50 MB and refuses one over 100 MB, so link large data to its source rather than committing it.

Three distinctions that carry the structure

capabilities/ feeds .claude/skills/

Top-level capabilities/ names what you can do in your own terms, for human readers — it is the folder a resume line points at. .claude/skills/ is a tool-specific directory some AI tools load automatically. The two are deliberately compatible: a capability you build here — the spec, the method notes, the model — can be copied into .claude/skills/ almost unchanged to become a personal AI skill that follows you to every project. Build the capability first; the skill falls out of it. Nothing in any course grades what you put in the sandbox.

The four starter files

These live at the repository root and evolve all term. An LLM may draft the mechanical ones; the bio in README.md you write yourself, and generic filler belongs in none of them.

FileWhat goes in it, minimally
README.mdYour bio, 200 to 400 words in your own writing, on who you are and what you are working toward, then an engagement index: a short list linking each piece of work to its brief, analysis, and memo. This is the by-subject view of the repository. It lives here, never in the folder paths.
RESUME.mdA Markdown resume. Rough is acceptable on the first day. The Start Here page covers drafting and reviewing it.
AGENTS.mdYour AI conventions, and the file most tools read before answering: how you want explanations, what an AI may and may not draft for you, and what must never be pasted into a model. See AI conventions.
CLAUDE.mdA single line directing the reader to AGENTS.md. One source of truth, two filenames — explained on the same page.

What each engagement produces

The same three artifacts every time. By the second engagement the structure is automatic and your attention goes to the analysis instead of the filing.

Stage of the workArtifactWhere it lives
BriefThe problem in your own words, and a hypothesis you can be wrong about, committed before you model anythingdocs/briefs/
BuildThe workbook, and the spec that lets somebody else reproduce itcapabilities/<capability>/
ReportThe evidence with figures, the memo with the recommendation, and the prompt loganalysis/ · docs/decisions/

Templates for the brief and the memo, and the naming rules that apply to all of them, are on Deliverable templates.

Naming

Build it with an LLM

Everything at this stage except your bio is a means to the work rather than the work itself — the skeleton, .gitignore, an AGENTS.md that already knows your field, the one-line CLAUDE.md, and a prompt log the assistant keeps for you. That makes it exactly the kind of work to hand to a model and verify rather than type by hand. Paste the following into Claude or ChatGPT, then paste your resume under the line — the differences between chat, desktop, and command line are covered in the AI Tools Lab.

Setup prompt — the skeleton and the four root files

I am setting up a public GitHub portfolio repository named firstname-lastname for a
graduate business course. My resume is below the line. Do five things, then show me
every file before I commit anything.

1. SKELETON. Create this structure, with a one-line README.md inside every directory
   that would otherwise be empty, so git will track it:
     README.md (already holds my bio - see 5), RESUME.md, AGENTS.md, CLAUDE.md,
     prompt-log.md, .gitignore
     capabilities/
     docs/briefs/  docs/decisions/
     data/
     analysis/figures/
   capabilities/ holds one folder per capability, each with README.md, spec.md and the
   model file. docs/briefs/ holds documents written BEFORE work begins; docs/decisions/
   holds recommendations written after. Do not create any folder named after a course,
   a semester, or a week.

2. AGENTS.md. Start from the baseline at
   https://adamwstauffer.github.io/ai-lms/ai-conventions.html and tailor it to me from
   my resume: name my field; list the kinds of data from my work that must never be
   pasted into a model (be specific to me - client records, patient data, government
   asset data, whatever applies); say how I want things explained; and keep the rule
   that you may not write my briefs, analyses, memos or reflections. Keep the Naming
   section word for word. Include this standing rule exactly:
     "At the end of every session that changed a file, append one entry to
      prompt-log.md: the date, what I asked, what you produced, what was wrong and how
      it was caught. Never backfill earlier sessions and never edit a past entry."

3. CLAUDE.md. One line: "Read AGENTS.md - it is the canonical file."

4. prompt-log.md. Write its first entry now, for this session, in that format.

5. RESUME.md and README.md. Put my resume into RESUME.md as clean Markdown without
   changing what it says. Do not change README.md - my bio is already in it. If
   README.md does not exist yet, create it with one line: "My bio goes here."

.gitignore, one pattern per line: ~$*.xlsx  ~$*.xlsm  ~$*.docx  ~$*.pptx  .DS_Store
Thumbs.db

If you are a chat window without file access, give me each file in its own code
block and the github.com steps to create it.
--- my resume ---

Before you accept the output, read every line and check three things: no folder is named after a course or a term; every directory contains something, or git will silently drop it; and README.md still holds your bio, word for word as you wrote it (Start Here, the bio step). Then read AGENTS.md: its data rule should name your data, not "sensitive information". If you are working in a chat window rather than a tool with file access, create the files on github.com directly — typing a slash in the filename box creates the folder.

The prompt log is the one file that cannot honestly be written after the fact, which is why the standing rule lives in AGENTS.md: every session appends its own entry, and the commit history shows the entries arriving alongside the work. A log that appears in one commit the night before a deadline is not a log.

Related