Meeting agendas
Builds the agenda for a committee, board or workgroup meeting as a Word document in your brand. Attach last meeting’s minutes and ask for the next agenda. It builds agendas, not minutes.
A Claude plan with code execution turned on (Setup, step 1), the brand setup run once, and three things to hand: the committee’s name, the meeting date, and the members with their roles, from the charter or the last minutes.
Add the skill
In the Claude web or desktop app, select Customize, then Skills › Add › Upload skill, and upload agenda-builder.skill from your download. Every upload tested so far used the file renamed to agenda-builder.zip; if the .skill file is not accepted, rename it and upload again. Setup walks through the screens.
Tested in Claude Code, the claude.ai web app and the Claude desktop app. See compatibility.
Ask for an agenda
Ask for it by name, “Build the agenda for…”, with the committee and the date. Attach last meeting’s minutes, or list the items yourself. If the brand setup gave you brand.json and logo.png to keep, attach both, with their names unchanged.
Give it the member list. If you do not, it asks for one rather than writing its own: a list of names nobody supplied looks official on a branded page, and it is not.
Ask for minutes, a record of what already happened, and it builds nothing and tells you it makes agendas only. A meeting with no standing members, such as a one-off briefing, gets a question too. A PDF, a spreadsheet or a slide deck is another skill’s job.
What comes back
A Word file with the meeting date in its name, such as ROAST_OPS_Safety_Committee_AGENDA_2026-04-23.docx. In the same reply Claude says which brand it used, or that it used the neutral colors, and whether it checked how the pages break.
Worked example
One request, typed into a new claude.ai chat with brand.json attached. ROAST WORKS is an invented coffee roastery.
What was typed
What came back
The file: ROAST_OPS_Safety_Committee_AGENDA_2026-04-23.docx, 2 pages.
Page 1 of what came back.
What gets checked
Before you get the file, the skill checks it. The file goes out only when every check passes:
- the meeting date at the top matches the date in the file name;
- the closing line carries this meeting’s date, not one left over from the last agenda;
- no member’s name is in bold: bold marks who attended, and that is added after the meeting;
- the file name follows your brand’s naming pattern, with a real calendar date;
- every table and picture fits the page.
What no check can tell you: whether the member list is right, and whether the items came from the right minutes. Check both against the charter and the last minutes before you send it.
If it looks wrong
It says the skill’s files are missing. Once in testing, a chat loaded the skill’s instructions without its files. Claude stopped and said so rather than build an unchecked copy. The same request in a new chat worked.
It is in plain colors, not your brand. The skill did not find your brand. Attach brand.json and logo.png and ask again.
It asked for the members. That is on purpose. Paste the list with each person’s role, or attach the charter.
Claude answered like a normal chat. Ask for the agenda by name. If it still does not start, see Setup, “When it doesn’t work”.
Using Claude Code instead
Extract the .skill file into your skills folder: ~/.claude/skills/ for every project, or .claude/skills/ inside one. A skill in that folder does not reach your claude.ai account, and one on your account does not reach that folder.
Needs Node on the machine; the pack is tested on Node 20 and Node 24. Nothing else to install: the one library the skill uses ships inside it.
The skill reads your brand from brand.json and logo.png, looking in this order and stopping at the first hit: the path in HPW_BRAND_KIT, the folder you build from, any folder above it, then the neutral defaults.
To confirm the install, run this from the folder you will build in. Exit 0 means every file is present:
To prove it end to end, build the shipped sample from a folder outside the skill. It builds the sample and checks it; expect PASS — clean: