Turn the people looking you up into bookings: 10 AI skills for your own site
photo-order
six pictures, in the order that gets a booking
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
--- name: photo-order description: Names the six pictures a venue website actually needs, gives each one a job, checks what you already have against the six, and returns the shot list for the gaps with the consent, the alt text, the file weight and the honesty check on every one. Use before a photographer quotes you, when the site is full of pictures and nobody books, or when the photographs are three years old and the chef has left. --- # Six pictures, each with a job, in the order a stranger decides in You give this every photograph currently on your website, the menu, and a note of who works there now. You get back the six slots named and ordered, each of your existing pictures matched to a slot or retired, a shot list for the slots you cannot fill, the alt text for each one, the consent position for every identifiable person, the file weight each picture must come in under, and the trigger that tells you when a slot has gone stale. It does not take the photographs, it does not retouch anything, and it will not keep a picture of food you no longer serve. ## What it does 1. **Name the six slots before you look at a single photograph, and never roll them up.** Slot one, the room at the busiest hour you genuinely trade, so a stranger knows what kind of place this is. Slot two, the outside with the sign and enough street to recognise it from, so they can find the door. Slot three, the dish you sell most of, photographed as it leaves the pass. Slot four, one real person who works there now, named. Slot five, the one thing you have that the places nearby do not. Slot six, the table or space a group is deciding about. Six named slots, each with one job: recognise, find, want, trust, choose, book. A folder called "gallery" is not a slot and never becomes one. 2. **Match every photograph you already have to exactly one slot, and retire the rest without negotiating.** Go through the site image by image. For each one, write which slot it fills and why, or write retire. Most independent venue sites hold between twenty and sixty images, of which four or five are doing any work at all. Nielsen Norman Group's eyetracking finding is the reason to be ruthless: "users pay attention to information-carrying images that show content that's relevant to the task at hand" and they "ignore purely decorative images that don't add real content to the page". A sunset, a wine glass against a window and a close-up of cutlery are not answering anybody's question. 3. **Do not fill a slot with a stock photograph, and particularly not slot four.** The same NN/g work is direct about this: users "ignore stock photos of generic people", while photographs of real staff are studied. In one example the participant "spent 10% more time viewing the portrait photos than reading the biographies, even though the bios consumed 316% more space", and the article's conclusion is that "the key point is that these are real people who actually work at the company". A stock photograph of a smiling chef in a venue where nobody looks like that is not neutral, it is the first thing on the page that is not true, and the reader does not know which of the other things are. 4. **Check the food photograph against what actually leaves the kitchen tonight.** CAP Code rule 3.1 requires that "marketing communications must not materially mislead or be likely to do so", and rule 3.11 that they "must not mislead consumers by exaggerating the capability or performance of a product". A burger built for the camera with a different bun, a portion that is a third bigger than the plate that goes out, a garnish the kitchen stopped doing, and a dish that has been off the menu since spring are all the same failure. The test is simple and nobody applies it: hold the photograph up next to a plate as it actually comes out and decide whether a customer who ordered from the picture would feel misled. 5. **Settle the consent and data protection position on every identifiable person before anything is published.** The Information Commissioner's Office puts it plainly: "If someone can be recognised from a photograph it's usually considered their personal data. As with any use of personal data, choosing your valid reason or 'lawful basis' is essential." The ICO also notes that legitimate interests "can be relied on when you're doing something outside the scope of any public functions and processing data in a way people might expect or you can justify. This can include promotion and marketing", and that whatever the basis, "you must tell people upfront what you're going to do with their personal data" and "where possible, you should also still give them the chance to opt out". Staff, guests in the background, children: each needs a recorded position and a named date. 6. **Write the alt text for each of the six at the same time as you choose them.** WCAG 2.2 success criterion 1.1.1 Non-text Content, Level A, requires that "all non-text content that is presented to the user has a text alternative that serves the equivalent purpose". Equivalent purpose is the phrase that decides what to write. For slot two the purpose is finding the door, so the alt text names the street and what the frontage looks like. For slot three the purpose is wanting the dish, so it names the dish as it appears on the menu. Decorative images get an empty alternative so a screen reader skips them rather than announcing a filename. Write the alt text into the shot list, not afterwards, because afterwards never comes. 7. **Give every slot a weight limit and a format, because a beautiful homepage that takes nine seconds is a closed door.** Google's mobile guidance asks for good quality without waste: "provide high quality images", "don't use images that are too small or have a low resolution on the mobile site", "use a supported format for images" and "don't use URLs that change every time the page loads for images". Google's page experience self-assessment asks whether "your pages have good Core Web Vitals" and whether "your content display well on mobile devices". Set a ceiling per image, use a modern format, size each one for the space it actually occupies rather than uploading straight off the camera, and check the total weight of the first screen separately from the rest. 8. **Put them in the order a stranger decides in, and put slot one in the first screen.** Recognise, find, want, trust, choose, book. Slot one belongs on the first screen because it answers the first question anybody asks, and nothing else competes with it there. Slots two to six follow in that order down the page, each next to the words it supports rather than collected into a gallery at the bottom. A gallery is a place photographs go to be scrolled past. A photograph beside the sentence it proves is doing work. Where a slot is empty, leave it empty rather than filling it with the nearest available picture, and put the gap on the shot list instead. 9. **Date every photograph and write down what makes it stale.** Slot three goes stale when the dish changes or the plating changes. Slot four goes stale the day that person leaves, and a departed chef smiling on a homepage is the version of this that embarrasses a venue publicly. Slot one goes stale when the room is redecorated or the furniture changes. Slot two goes stale when the sign or the frontage changes. Write the date each was taken, the trigger that retires it, and who is responsible for noticing. Then put a review in the diary twice a year, because the trigger that nobody owns is the trigger nobody pulls. ## Then it checks 1. All six slots are named, each carries its one job, and no slot holds more than one photograph or is described as a gallery. 2. Every photograph currently on the site is matched to exactly one slot or marked retire, with the reason written, and no image is left unclassified. 3. No slot is filled with a stock photograph, and slot four names the person in the picture and confirms they work there now. 4. The food photograph has been compared against a plate as it currently leaves the kitchen, and the dish is on the menu as published today. 5. Every identifiable person in every published photograph has a recorded lawful basis, a record of having been told, a recorded opt-out position and a date, and any person who cannot be identified or contacted is listed rather than published. 6. Every slot carries its alt text, its file weight ceiling, its format, the date the photograph was taken and the trigger that retires it, with no cell left blank. Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop. ## Rules - Public information only. - Never invent a fact, a number or a quote. - Anything sent in someone's name says whose name it is. A photograph of a member of staff goes to that member of staff before it goes on the website. - Never publish a recognisable photograph of a person without a recorded lawful basis, a record that they were told, and a date. This includes staff who have left, guests in the background of a room shot and anybody under eighteen, and where the position cannot be established the picture is not used. This rule has no exception for a photograph the owner likes. - Never use a stock photograph to fill a slot. An empty slot with an entry on the shot list is honest, and a stock kitchen with somebody else's staff in it is the first lie on the page. - Never publish a photograph of a dish that is not on the menu today, and never publish one built differently from the plate that goes out. Retire it and put a reshoot on the list. - Never generate a photograph of the venue, the food or the people with an image model, and never present a generated image as a photograph of this business. A picture of a room that does not exist is a misleading action whatever it cost to make. - Never state a figure for how many more bookings a photograph produces, or what proportion of visitors look at pictures first. No published figure exists for a single independent UK venue and an owner who budgets against a borrowed number will overspend on a photographer or underspend on the kitchen. - This output is a working document prepared for the owner to check against their current menu, their current team and their own data protection records before anything is published, and for their solicitor or data protection adviser to check the lawful basis for any photograph of an identifiable person. It applies published advertising rules, published accessibility criteria and published data protection guidance to a set of images. It is not legal advice and it does not confirm that any photograph may lawfully be published. ## Built from - Jakob Nielsen, Nielsen Norman Group, "Photos as Web Content", https://www.nngroup.com/articles/photos-as-web-content/, published 1 November 2010, read 16 September 2026: the information-carrying against decorative finding in step 2, and the stock photograph finding and the real-people result in step 3. - Committee of Advertising Practice, CAP Code (Edition 12), Section 3 "Misleading advertising", https://www.asa.org.uk/type/non_broadcast/code_section/03.html, no publication date shown on the page, read 16 September 2026: rule 3.1 on materially misleading communications and rule 3.11 on exaggeration, which is the test in step 4. - Information Commissioner's Office, "Taking photographs: data protection advice for schools", https://ico.org.uk/for-organisations/advice-for-small-organisations/news-blogs-and-events/blogs/taking-photographs-data-protection-advice-for-schools/, no publication date shown on the page, read 16 September 2026: the statement that a recognisable person in a photograph is personal data, the legitimate interests description covering promotion and marketing, and the tell-people-upfront and offer-an-opt-out expectations, in step 5. - World Wide Web Consortium, "Web Content Accessibility Guidelines (WCAG) 2.2", W3C Recommendation 12 December 2024, https://www.w3.org/TR/WCAG22/, read 16 September 2026: success criterion 1.1.1 Non-text Content and the equivalent purpose standard, in step 6. - Google, "Mobile site and mobile-first indexing best practices", Google Search Central, https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing, last updated 10 December 2025, read 16 September 2026: the image quality, resolution, format and stable URL instructions in step 7. - Google, "Understanding page experience in Google Search results", Google Search Central, https://developers.google.com/search/docs/appearance/page-experience, last updated 10 December 2025, read 16 September 2026: the self-assessment questions on Core Web Vitals and mobile display used as the weight test in step 7.
Prompt for Codex
# photo-order ## You are given Every photograph currently published on this UK hospitality business website, as files, each with its address on the site, the page and position it appears at, its file type, byte size, pixel dimensions and existing alternative text exactly as written. Claude's assignment of each photograph to exactly one of the six named slots, or to retire, with the reason written for each. The six slots in order: `room at the busiest hour`, `outside with the sign`, `the dish you sell most of`, `one real person who works here`, `the thing nobody else nearby has`, `the table a group is choosing`. Claude's shot list for any slot that cannot be filled from existing photographs, and the alt text Claude has written for each slot. The menu exactly as published today. The current staff list with the name of any person appearing in any photograph. The owner's data protection records: the lawful basis relied on for each identifiable person, whether and when they were told, and whether an opt-out was offered and taken. The date each photograph was taken, where known. The weight ceiling and image format the owner or their developer has set. ## Produce Write into a `./photo-order-output/` folder: 1. `slots.csv` with these columns in this order: `slot_no`, `slot_name`, `job`, `filled`, `image_ref`, `alt_text_verbatim`, `weight_ceiling_bytes`, `required_format`, `date_taken`, `staleness_trigger`, `owner_of_slot`. Exactly six rows, `slot_no` 1 to 6 in the order given above. `job` is exactly one of `recognise`, `find`, `want`, `trust`, `choose`, `book`, one each. `filled` is `yes` or `no`, and every `no` row has an empty `image_ref` and a matching entry in `shot-list.md`. 2. `existing-images.csv` with columns: `image_ref`, `file_address`, `page`, `position_on_page`, `file_type`, `file_size_bytes`, `pixel_width`, `pixel_height`, `existing_alt_verbatim`, `assigned_slot`, `verdict`, `reason_verbatim`. `image_ref` is IM001 upward. `assigned_slot` is 1 to 6 or empty. `verdict` is exactly one of `keep in slot`, `retire`, `no verdict supplied`. Every image published on the site appears exactly once and none is omitted. 3. `honesty-check.csv` with columns: `image_ref`, `slot_no`, `subject_type`, `is_stock_image`, `is_generated_image`, `dish_on_menu_today`, `matches_plate_as_served`, `person_still_works_here`, `rule_cited`, `verdict`. `subject_type` is exactly one of `room`, `exterior`, `food`, `drink`, `person`, `other`. `rule_cited` is exactly one of `CAP Code 3.1`, `CAP Code 3.11`, `none`. `verdict` is exactly one of `publish`, `retire`, `reshoot`. 4. `people-and-consent.csv` with columns: `image_ref`, `person_name_or_description`, `identifiable`, `role`, `lawful_basis_recorded`, `told_upfront`, `date_told`, `opt_out_offered`, `opt_out_taken`, `under_18`, `clear_to_publish`. `role` is exactly one of `staff`, `former staff`, `owner`, `guest`, `supplier`, `unknown`. `clear_to_publish` is `yes` only where `identifiable` is `no`, or where `lawful_basis_recorded`, `told_upfront` and `date_told` are all present and `opt_out_taken` is `no`. Every other case is `no`. 5. `alt-text.csv` with columns: `slot_no`, `image_ref`, `purpose_of_image`, `alt_text_verbatim`, `alt_characters`, `alt_is_empty`, `marked_decorative`, `repeats_filename`, `criterion_cited`. `criterion_cited` is `WCAG 2.2 SC 1.1.1` on every row. Alt text is copied verbatim from the input and is never written or edited by Codex. 6. `weight-and-format.csv` with columns: `image_ref`, `slot_no`, `file_size_bytes`, `weight_ceiling_bytes`, `over_ceiling_by_bytes`, `file_type`, `required_format`, `format_matches`, `pixel_width`, `displayed_width`, `oversized_by_factor`, `url_is_stable`. Plus a final row with `image_ref` of `FIRST SCREEN TOTAL` carrying the summed byte weight of every image in the first screen. 7. `shot-list.md` - one numbered entry per unfilled slot, copied verbatim from the input: the slot name, its job, what is to be photographed, when, who must be present, and the consent to be obtained beforehand. Written empty if no shot list was supplied. 8. `gaps.md` - a numbered list of: any slot unfilled; any published image with no verdict; any stock or generated image found in any slot; any food image whose dish is not on today's menu; any person image where the person no longer works there; any identifiable person with `clear_to_publish` of `no`; any slot with no alt text, no date taken or no staleness trigger; any image over its weight ceiling; and the first screen total weight. ## Rules - Codex sorts, measures and records. It never invents, never rewords the owner's copy, and never makes the judgement that was supplied to it. Which slot a photograph fills, whether it is honest and whether it may be published are all decisions that arrive with the input. - Never write, edit, shorten or improve alt text, a shot list entry or a reason. Where any of them is missing, the cell is left empty and the fact is listed in `gaps.md`. - Never mark a person `clear_to_publish` as `yes` without a recorded lawful basis, a record that they were told and the date they were told, all present in the row. A person recorded as under 18, as a guest with no record, or as unknown is never `yes`. - Never generate, edit, retouch, crop, upscale or composite an image, and never create an image of the venue, the food or the people by any means. Any image supplied as generated is recorded as such and routed to `gaps.md`. - Never assign more than one photograph to a slot and never create a seventh slot, a gallery row or a category. Six rows, no more. - Never write a figure for bookings gained, engagement or click-through attributed to photographs. No such figure exists for a single independent UK venue. - File sizes and pixel dimensions are read from the files themselves and displayed widths from the served page, never estimated. Where a displayed width cannot be read, `oversized_by_factor` is left empty and the row goes to `gaps.md`. - Every quoted string is copied exactly, including punctuation, capitalisation and any emoji, and a person's name is copied exactly as the owner supplied it. - Use British English, GBP and DD Month YYYY dates. No em dashes in any file you write, and any supplied text containing one is recorded verbatim and flagged in `gaps.md`. - Every file ends with this line: this is a working document prepared for the owner to check against their current menu, their current team and their own data protection records, and for their solicitor or data protection adviser to check the lawful basis for any photograph of an identifiable person. It applies supplied rules to a set of images and is not legal advice or a confirmation that any photograph may lawfully be published. ## Return The absolute path of each file written and the row count of each CSV. Which of the six slots are filled and which are not, by name. The number of photographs published on the site, how many kept and how many retired. Every stock and every generated image found, by reference. Every food image whose dish is not on today's menu, and every person image where the person no longer works there. Every identifiable person whose `clear_to_publish` is `no`, with the reason. Every slot missing its alt text, its date taken or its staleness trigger. The number of images over their weight ceiling, the largest single file, and the first screen total weight in bytes. The number of shot list entries. And the `gaps.md` item count.
Built from the best public work on this
Sources for photo-order
Everything below was opened and read on 16 September 2026. Nothing is cited that could not be loaded.
1. Jakob Nielsen, Nielsen Norman Group, "Photos as Web Content"
https://www.nngroup.com/articles/photos-as-web-content/, published 1 November 2010, read 16 September 2026.
The oldest source in this pack and the one that decides the most. It is the published eyetracking work that separates photographs people look at from photographs people do not, and every venue website in the country is full of the second kind.
The finding steps 2 and 3 rest on is stated at the top: "Users pay close attention to photos and other images that contain relevant information but ignore fluffy pictures used to 'jazz up' web pages." The gap is described as dramatic: "Some types of pictures are completely ignored. This is typically the case for big feel-good images that are purely decorative."
On people specifically, which is slot four, the article reports a participant looking at a company team page and finding that "the user spent 10% more time viewing the portrait photos than reading the biographies, even though the bios consumed 316% more space", with the conclusion that "the key point is that these are real people who actually work at the company". Against that it sets the opposite case: users "ignore stock photos of generic people". Its example of a real but purposeless photograph is described bluntly as "pure filler", added because somebody asked designers to "jazz up" the page, and the verdict is that "on the web, jazzed-up = ignored".
The closing sentence is worth showing an owner about to book a photographer: "Invest in good photo shoots: a great photographer can add a fortune to your website's business value." It is an argument for fewer and better, not for more.
Where the skill departs: the study is from 2010 and its examples are ecommerce catalogues, a university and a software company, none of which is a pub. The skill takes the mechanism, that an image either carries information relevant to the visitor's task or is ignored, and builds six hospitality slots the article never mentions. It does not carry the article's percentages into the output. They belong in this file as evidence of how the finding was reached, not in an owner's document where they would read as a promise.
2. Committee of Advertising Practice, CAP Code (Edition 12), Section 3 "Misleading advertising"
https://www.asa.org.uk/type/non_broadcast/code_section/03.html, no publication date shown on the page, read 16 September 2026. The background notes that "the ASA will take the Unfair Commercial Practices (UCP) provisions in Chapter 1 of Part 4 of the Digital Markets, Competition and Consumers Act 2024 into account when it rules on complaints about marketing communications that are alleged to be misleading".
A photograph on a venue website is part of a marketing communication and is judged as one. Two rules do the work in step 4. Rule 3.1 is the general duty: "Marketing communications must not materially mislead or be likely to do so." Rule 3.11 is the specific one for pictures of food: "Marketing communications must not mislead consumers by exaggerating the capability or performance of a product."
The background paragraph matters as much as the rules, because it settles whether a photograph can be considered apart from the words beside it: "The ASA will take into account the impression created by marketing communications as well as specific claims. It will rule on the basis of the likely effect on consumers, not the marketer's intentions." A burger photographed with a different bun was not intended to mislead anybody. Intention is not the test.
Rule 3.7 supports the same step from another direction, requiring marketers to "hold documentary evidence to prove claims that consumers are likely to regard as objective and that are capable of objective substantiation". A photograph can carry a claim as effectively as a sentence: a full dining room in a venue that is never full, a beer garden in sunshine that is a car park with three tables, a chef's brigade of six where there are two.
Where the skill departs: the Code does not require a photograph to be unretouched, unstyled or unlit, and neither does the skill. Food photography is a craft and styling a plate is not a breach. The line the skill draws is whether a customer who ordered from the picture would feel misled by the plate. That test is ours, not the ASA's, and it is deliberately stricter because it is cheaper to apply than a ruling is to receive.
3. Information Commissioner's Office, "Taking photographs: data protection advice for schools"
https://ico.org.uk/for-organisations/advice-for-small-organisations/news-blogs-and-events/blogs/taking-photographs-data-protection-advice-for-schools/, no publication date shown on the page, read 16 September 2026. The page carries a note that the ICO has "updated this blog to clarify and expand on a few key points", and states that "managers at small groups and clubs may also find this advice helpful".
Cited for step 5, and it is the only ICO material we could load that addresses photographs of identifiable people directly rather than personal data in the abstract.
The principle is one sentence: "If someone can be recognised from a photograph it's usually considered their personal data. As with any use of personal data, choosing your valid reason or 'lawful basis' is essential." That alone changes how an owner thinks about a room shot with nine recognisable customers in it.
The description of legitimate interests is the part that applies to a business: it "is more wide-reaching and can be relied on when you're doing something outside the scope of any public functions and processing data in a way people might expect or you can justify. This can include promotion and marketing."
Two practical expectations follow and the skill adopts both. Transparency: "You must tell people upfront what you're going to do with their personal data so they know what to expect from the beginning." And the opt-out: "Where possible, you should also still give them the chance to opt out." The page separates that from consent as a lawful basis, explaining that "offering an opt-out doesn't mean you're relying on 'consent' as a lawful basis under data protection law".
Where the skill departs: this guidance is written for schools, and its worked examples involve pupils, parents and public task as a lawful basis, none of which applies to a restaurant. We say so plainly rather than quietly generalising it, and the skill uses only the two transferable points: that a recognisable person is personal data, and that a business relying on legitimate interests should tell people and offer an opt-out. Whether a venue may publish a particular photograph is a question for its own data protection adviser, and the skill routes it there. It is nonetheless stricter than the guidance in one respect: where the position cannot be established the picture is not used, because a venue has no equivalent of a school's standing relationship with the people in its photographs.
4. World Wide Web Consortium, "Web Content Accessibility Guidelines (WCAG) 2.2"
https://www.w3.org/TR/WCAG22/, W3C Recommendation 12 December 2024, read 16 September 2026.
One success criterion, for step 6. Success criterion 1.1.1 Non-text Content, Level A: "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose", subject to listed exceptions for controls and input, time-based media, tests, sensory content and CAPTCHA.
The phrase "serves the equivalent purpose" is what makes this useful rather than a chore. It says the alternative is written against the job the image is doing, not against what the image contains. Because this skill has already given every slot a single job, the alt text almost writes itself: the exterior shot's job is finding the door, so the alternative names the street and the frontage; the food shot's job is wanting the dish, so it names the dish as the menu names it. An alternative reading "IMG_4471.jpg" serves no purpose at all, and one describing the lighting serves the wrong one.
Its treatment of decorative content is equally load-bearing. Where an image carries no information the correct alternative is an empty one, so assistive technology passes over it silently. A venue that adds descriptive alt text to every flourish has made the page noisier for exactly the people the criterion exists to help.
Where the skill departs: this is one criterion out of 86 and the skill makes no claim about accessibility beyond it. Image contrast, text inside images and reflow are handled by the menu skill in this pack. The skill also does not write alt text itself at the Codex stage. Alt text is copy in the owner's voice about the owner's business, and a machine filling it in produces the plausible generic sentence the criterion was written to prevent.
5. Google, "Mobile site and mobile-first indexing best practices" and "Understanding page experience in Google Search results", Google Search Central
https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing and https://developers.google.com/search/docs/appearance/page-experience, both last updated 10 December 2025, both read 16 September 2026.
Used for step 7, and only for the part that decides whether a photograph arrives before the visitor gives up.
The mobile page gives four instructions the skill turns into a checklist: "Provide high quality images", "Don't use images that are too small or have a low resolution on the mobile site", "Use a supported format for images", and "Don't use URLs that change every time the page loads for images." The first two together are the useful tension. The answer to a slow page is not a smaller, worse picture, it is a correctly sized picture in a modern format, and the difference between those two answers is the difference between a site that looks cheap and one that loads.
The page experience document supplies the self-assessment the skill uses as the test rather than a number: "Do your pages have good Core Web Vitals?" and "Does your content display well on mobile devices?", with the warning that owners "should not focus on only one or two aspects of page experience".
Where the skill departs: the skill quotes no millisecond thresholds, no Core Web Vitals figures and no kilobyte target of its own. The weight ceiling in the output is the one the owner or their developer sets, and the skill records whether each image is over it. Speed as a ranking subject belongs to the pack that covers being found. What belongs here is narrower and more useful: the largest photograph on the first screen is nearly always the reason the first screen is slow, and it is nearly always a camera file uploaded without being resized.
Best public prompt we found for this job
The closest public artefact is the `canva-creator` skill in Anthropic's `knowledge-work-plugins` repository, raw source at https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/main/small-business/skills/canva-creator/SKILL.md. The repository has 24,123 stars, read from api.github.com on 16 September 2026.
The instruction worth taking is its first rule about images, and it is the whole basis of step 1:
1. **Enumerate every image slot by name.** Square Instagram posts usually have 1-2 image slots; carousels and product grids can have 5+. List them individually (`Header_Image`, `Product1_Image`, `Product2_Image`, ...) - never roll them up as "product images."
That is exactly right, and it is the discipline a venue website never applies. A website has image slots too, they are simply unnamed, so the pictures are chosen as a set and dropped into a gallery where none of them has a job. Naming the six slots before choosing anything is that instruction transplanted.
Its handling of a shortfall is also good and we kept the shape of it. When the template has more slots than the brief has photographs, it stops and asks rather than filling the gap. Our version is stricter: an unfilled slot stays empty and goes on the shot list, and may not be filled by reusing another slot's picture or by anything from a stock library.
Three things we deliberately did not copy. It is a production tool that uploads assets and builds designs, and this skill produces a list and takes no photographs, because the photographs are the owner's and the venue's. It has no honesty layer, which is fine for a brand template and wrong for a plate of food a customer will be handed twenty minutes after looking at the picture. And it has no concept of the people in the photographs having rights, which for a venue photographing its own staff and its own guests is the part most likely to cause real harm and the part nobody thinks about until a former employee writes in.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera