
Portfolio Site
Build a personal or professional portfolio site that showcases projects, an about/bio, and contact links in a single polished page. Locks the content inventory — which projects, what bio, which links — first, then a clean gallery-style visual design, then builds responsive HTML with a project grid and real CSS. Scoping the content before designing prevents a small model from inventing fake projects or building a layout the real content does not fit; the portfolio's job is to present a finite set of real work cleanly.
Steps
Entry step: content-scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Content scopeplannerentry
inventory projects, bio, links, sections
Show working prompt
Inventory the real content. (1) List the projects to feature (title, one-line description, role, link/repo, and whether an image exists) — use only what the user provided; if details are missing, leave placeholders the user must fill, do NOT fabricate. (2) Draft the bio focus (who, what they do, what they want). (3) List contact/social links to include. (4) Order the sections: hero/intro, project grid, about, contact. (5) Write an acceptance-criteria checklist of 5-8 items, e.g. 'every listed project has a card', 'the hero states name and role', 'an about section is present', 'contact links are present and clickable', 'responsive at 375px and 1280px', 'no fabricated projects'. Write to notes/content-scope.md and via write_task_note. No design or HTML yet.
- Visual designvisual-designer
gallery layout, project card, palette, type
Show working prompt
Design the showcase look. (1) Pick a restrained palette (hex) and type pairing that lets the work shine, not the chrome. (2) Design the project card (image/placeholder, title, description, link) and how cards lay out in a responsive grid. (3) Lay out the hero/intro and the about/contact sections. (4) Specify hover/focus states for cards and links and the overall spacing rhythm. (5) Self-contained CSS, no external assets beyond any provided images. Write the visual spec to notes/visual-design.md and via write_task_note. No HTML yet.
- Builddeveloper
implement index.html with the project grid
Show working prompt
Implement index.html with inline CSS to the visual spec, using only the scoped content. (1) Palette as CSS variables and the chosen type. (2) Hero with name and role. (3) A responsive CSS-grid project gallery, one card per scoped project with its real (or placeholder) details and a clickable link. (4) About and contact sections with clickable links. (5) Responsive at 375px and 1280px; vanilla HTML/CSS, no CDN. Keep placeholders explicit where the user must supply content — never invent projects. On a loop-back, fix only the named gaps without regressing passing criteria. write_task_note the path and passing criteria.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Evaluate the portfolio. Open/render index.html and resize to 375px and 1280px. Check EACH criterion from notes/content-scope.md and write PASS/FAIL with a reason: does every scoped project have a card, does the hero state name and role, is there an about section, are contact links present and clickable, is it responsive, and crucially are there ZERO fabricated projects? Any invented project or missing scoped project is a FAIL — loop back to build. Then route — this is the whole point of the loop: - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "build" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- portfolio site
- personal website
- showcase my work
- developer portfolio
- designer portfolio
- build a portfolio
Source
View this craftbook on GitHub · MIT license