Practical AI advice for teams and leaders

Beginner Steps. Advanced AI.

Published guideUpdated

Chapter 14 of 20Build & check

Chapter menu20 chapters

Finish the other pages

Build About, Services, and Contact. Keep the same design and check each page as you go.

Kooka, a friendly kookaburra teacher wearing glasses and holding a blue notebook.

Let’s give each page a clear job, then help visitors move between them.

Follow the pictures

Illustrated examples. Your app may look different. Tap an image to enlarge it.

  1. Plan the next pages

    Use your page plan to give About, Services, and Contact one clear job each.

    Illustrated example: Page purpose → Real content → Next action. Kooka points to the action.
    Illustrated example
    Your notes
    Page purpose → Real content → Next action

    Look for: Each remaining page has a clear task and approved content.

    More help with this action

    Use the page and content plan to create a task for each remaining page with its purpose, approved copy, images, and intended next action. Replace example business details with your own before publication.

    Keep the page tasks small

    1. Open docs/sitemap.md and docs/content.md with Codex. Make a separate task for About, Services, and Contact.
    2. For each task, name the page’s purpose, its approved text and images, and the next action visitors should take.
    3. Replace fictional business details with your own. Keep missing content visible in the task list rather than asking Codex to invent it.

    You should now see: Each remaining page has a clear task and approved content.

  2. Start a new branch

    Ask Codex to create a branch named codex/remaining-pages, starting from your checked Home page.

    Illustrated example: Checked Home → codex/remaining-pages. Kooka points to the action.
    Illustrated example
    Ask Codex
    Checked Home → codex/remaining-pages

    Look for: Your new branch includes the working Home page.

    More help with this action

    Ask Codex to create a new Git branch for the current milestone, named codex/remaining-pages, and confirm that its starting point contains the checked Home page.

    Keep a known starting point

    1. First confirm that the checked Home page was saved in a commit. Ask Codex to report the current branch and any unsaved changes.
    2. Ask it to create codex/remaining-pages from that working version. It should preserve your current files and history.
    3. Ask Codex to confirm the branch name and that Home still opens. A branch lets you review this milestone separately.

    You should now see: Your new branch includes the working Home page.

  3. Build the next pages

    Build About and Services with the shared layout. Open and review each before continuing.

    Illustrated example: Build About → Review → Build Services → Review. Kooka points to the action.
    Illustrated example
    Page by page
    Build About → Review → Build Services → Review

    Look for: Both pages open and use the same header, footer, and style as Home.

    More help with this action

    Build About and Services using the shared Astro layout. Review each in the local browser before moving to the next task.

    Reuse the first page’s foundation

    1. Ask Codex to build About from its task and the shared layout. Open the local page and check the text, images, and next action.
    2. Give concrete feedback, such as “this heading is too long on my phone”. Let Codex fix it and rerun the affected checks.
    3. Repeat for Services. Review both pages when opened directly by their addresses, as well as through navigation.

    You should now see: Both pages open and use the same header, footer, and style as Home.

  4. Add a real contact method

    Build Contact with your visible email address and a matching email link.

    Illustrated example: Show your address → Email link → Your email app. Kooka points to the action.
    Illustrated example
    On Contact
    Show your address → Email link → Your email app

    Look for: Visitors can copy your address or open a message addressed to you.

    More help with this action

    Build Contact with a visible, copyable email address and a matching mailto email link. Add the same navigation and footer to every page, plus a useful missing-page screen.

    Use the simple email route first

    1. Give Codex an inbox you own and can test. Ask it to show the address as selectable text and create a matching mailto link.
    2. Click the link on a device with an email app configured. Check the recipient address; the visitor still chooses whether to send.
    3. Keep the copyable address as a fallback. Add shared navigation and a useful missing-page screen so visitors can find their way back.

    You should now see: Visitors can copy your address or open a message addressed to you.

  5. Try the phone menu

    Try the phone menu with touch and a keyboard, using the accessibility checks.

    Illustrated example: Open menu → Choose a page → Close menu. Kooka points to the action.
    Illustrated example
    Touch
    Open menu → Choose a page → Close menu
    Keyboard
    Tab to controls → Activate → Check focus

    Look for: You can open, use, and close the menu without losing your place.

    More help with this action

    If the design needs a mobile menu, check opening, closing, focus, and navigation using touch and keyboard, using the W3C accessibility checks. Ask Codex to remove interactions that add complexity without helping visitors.

    Check any menu the design uses

    1. Open the phone-sized preview. Tap the menu, choose a page, then reopen it and try its close control.
    2. Put the mouse aside and use the keyboard. Check a visible focus outline, a sensible order, and a way out of the open menu.
    3. Tell Codex the exact action that failed and what you expected. If a menu adds complexity without helping visitors, simplify it.

    You should now see: You can open, use, and close the menu without losing your place.

  6. Check and save

    Run the checks, review the changes, and save a commit for each completed milestone.

    Illustrated example: Run checks → Review changes → Commit. Kooka points to the action.
    Illustrated example
    After a page
    Run checks → Review changes → Commit

    Look for: The finished pages have check evidence and saved milestones.

    More help with this action

    Run the existing checks after each completed milestone, review the changed files, and save a descriptive Git commit. If you choose a backend form later, use the visitor-testing chapter to plan a separate milestone with a real endpoint, validation, failure handling, spam controls, and a test message received in your inbox.

    Keep progress reviewable

    1. Ask Codex to run the configured checks after each milestone. Inspect the changed files and open the affected pages yourself.
    2. Save a descriptive commit once the work is checked. Keep unfinished tasks and failed checks in the report.
    3. A backend form is an optional later milestone. It needs a real receiving endpoint, server-side validation, spam controls, error states, and a message received in your inbox; a success animation alone is insufficient.

    You should now see: The finished pages have check evidence and saved milestones.

Why this step matters

Astro turns files in src/pages/ into website addresses. For example, about.astro provides the About page. Codex can explain the file-to-address relationship while creating the pages; you do not need to memorise the code.

For the first release, Contact will show your real email address and an email link. A mailto link opens the visitor's configured email app; the visitor still chooses whether to send the message. A website form needs a real receiving service and verified delivery. A success animation alone proves nothing about delivery.

Basics, explained

Route

An address within your website, such as /services/. Each route should lead to the page visitors expect.

Branch

A separate line of saved work where you can develop a change before bringing it into the main version.

mailto link

A link that asks the visitor's email app to start a message to an address. It does not itself send or store that message.

Ask your agent

PromptComplete the next page

Copy into Codex, then adapt it to your project.

Use the approved Fieldnotes Studio brief and shared design to complete the next unfinished page. Explain which route and files you will change. For Contact, use the real address I supply, show it as selectable text, and create a matching mailto link. Reuse shared components, check desktop and mobile behaviour, and run the existing checks. Report what changed and any remaining tasks. Keep the work on our milestone branch and prepare a descriptive commit for review.
Check your work

Tick each item after you confirm it yourself. You can untick it at any time.

If something goes wrong
Clicking the email link does nothing on one computer.
Check that an email app or webmail handler is configured. Keep the address visible so visitors can copy it into their preferred email service.
A navigation link produces a missing-page error.
Give Codex the exact failing address and expected page. Ask it to compare the link with the actual page route, fix the mismatch, and retest it.
Personal notes

Add questions, decisions or ideas for your website. Saved in this browser when available; export your notes to keep a copy. Never enter secrets.

Downloads & saved progressGuide, notes and personal checks

Download the complete guide or export your notes from every chapter. Instructions last reviewed: .

Download guide .md Go to starter files

Checks and notes stay in this browser, separately for each language. Export your notes to preserve them. Never enter API keys or other secrets here.

Starter filesWorking instructions and four skills

These templates give your agent a starting set of working instructions. Review them, adapt them to your website, and save each file at the exact path shown, relative to your project folder.

A downloaded skill is an instruction file. It does not install a test runner, run a security scan, or prove your site is safe. The guide shows how to set up and check that work.

Download the instruction files in the language of this guide. Keep the technical filenames and paths as shown.

Download all starter files .md bundle
FileAGENTS.md

Save at the path above.

Download file
# Website working agreements

This project follows the website brief and acceptance criteria we have agreed with its owner. Use the existing technology choices unless a concrete requirement calls for a change.

## How to work

- For a substantial feature, explain the proposed changes and verification plan before implementing it. Complete authorized local work in small, reviewable stages.
- Read the files relevant to the task. Keep unrelated pages and configuration intact.
- Explain new technical terms in plain language when reporting to the owner.
- Use the repository's website-design, clean-code, website-testing and website-security skills when their workflows apply.
- Record important decisions and unresolved content in the project's notes. Do not invent business facts, endorsements or publishing rights.

## Verification

- Inspect package.json to find the actual build, type-check and test commands. Do not invent a successful check or create a meaningless test just to make a command pass.
- Run checks appropriate to the change. Local tests use disposable fixtures and have no production access; run them and repair failures caused by the requested change without asking at every step.
- Verify visitor interactions in a browser when browser tools are available. Report checks that remain unavailable or incomplete.
- Show the owner a working local preview and summarise changed behaviour, evidence and remaining limitations.

## Credentials and publication

- Keep API keys and other secrets out of browser code, prompts, logs and Git. Store local secrets in ignored files or the chosen secret store.
- Local build and test work is authorized. Publishing the site, sending a real message, processing a payment or changing production data requires the owner's authorization for that action.
- Preserve a recoverable working version before release. Describe how to restore it.

These are starter agreements for a new tutorial project. Adapt them to the owner's actual requirements and existing authorization.
File.agents/skills/website-design/SKILL.md

Save at the path above.

Download file
---
name: website-design
description: Develop or refine a website's visual direction and responsive interface from its brief, content and existing design. Use for page design or visual implementation.
---

Read the website brief and any existing design notes relevant to the requested page. Work within the user's brand, content and technology choices.

When establishing a new direction, propose typography, a small colour palette, a spacing rhythm and a sample page. Explain how these choices support the audience and main visitor action. Use real content to judge hierarchy and line lengths.

Implement reusable elements for navigation, headings, buttons and repeated content. Give primary actions a clear visual hierarchy. Preserve visible keyboard focus, readable contrast and usable labels. Design narrow screens alongside desktop screens; check long headings, navigation and tap targets in a browser.

Use semantic HTML before adding custom interaction. Keep motion optional and respect reduced-motion preferences. Use assets with known permission to publish; record their sources. Do not invent client testimonials, achievements or business facts.

Before expanding a design across all pages, show the first complete page at desktop and mobile widths. Describe the main design decisions and any unresolved content. When a browser tool is unavailable, report that visual verification is still pending.
File.agents/skills/clean-code/SKILL.md

Save at the path above.

Download file
---
name: clean-code
description: Implement or refactor website code into understandable components using the project's existing stack and conventions. Use for website implementation or maintainability work.
---

Read the relevant files and package scripts before choosing an implementation. Preserve working behaviour outside the requested change. Prefer the existing stack and dependencies when they meet the need.

Keep page content separate from repeated layout where that makes editing easier. Name components, variables and functions for their purpose. Use shared components for repeated navigation and page elements; avoid abstraction for a single trivial use.

Handle empty, invalid, loading and error states for interactions that need them. Use native browser controls and semantic HTML when they serve the interaction. Avoid fake form submission, simulated success messages and dead links.

Use type checking and the project's formatting or lint rules where configured. When adding a package, explain its purpose and any new maintenance or runtime requirements. Keep generated build output, dependencies and local environment files out of version control.

Run the existing checks relevant to the change, including a production build when output can change. Summarise changed behaviour, verification results and remaining limits. Explain the main files in plain language so a beginner can find and edit their content.
File.agents/skills/website-testing/SKILL.md

Save at the path above.

Download file
---
name: website-testing
description: Verify website changes through visitor journeys, appropriate automated tests and browser checks. Use when testing a website, investigating a failure or preparing a release.
---

Start from the brief and observable acceptance criteria. Inspect existing test and build commands; do not assume that a script exists. Choose checks based on the changed behaviour and the cost of failure.

Exercise the main visitor journey and affected links, navigation and forms. Include invalid input and relevant error states. For a contact form, verify actual delivery in the agreed test destination before reporting that it works. For an email link, explain that it opens the visitor's configured email app and does not send a message automatically.

Check narrow and wide screens in a browser. Include keyboard navigation, visible focus, accessible names, zoom and horizontal overflow. Automated accessibility results complement these manual checks and do not establish complete accessibility conformance.

Add automated tests for important behaviour or demonstrated regressions. Test observable outcomes and meaningful failure cases; avoid tests that merely repeat the implementation or match incidental wording. Use disposable test data and local fixtures. Never send real messages, charge payments or alter production data without the user's authorization.

Reproduce a failure, fix its cause and rerun affected checks. Report commands run, results, browser checks performed and anything not checked. A successful build shows that the site can be generated; verify visitor behaviour separately. Never report a check as passed when it was skipped or unavailable.
File.agents/skills/website-security/SKILL.md

Save at the path above.

Download file
---
name: website-security
description: Review a website's secrets, dependencies, inputs, permissions and deployment configuration, and repair scoped security findings. Use for requested security review or release preparation.
---

Identify the site's relevant surfaces: static pages, forms, backend routes, authentication, third-party scripts and stored data. Scope review to the actual architecture and authorized environment.

Keep credentials out of browser code, logs, prompts and Git. Distinguish build-time public configuration from server secrets. If a key was committed or exposed, stop using it, explain that deleting the file does not revoke the key, and have the owner revoke or rotate it before further use. Do not print the credential in your report.

Inspect applicable dependency advisories and assess whether the affected package and vulnerable behaviour are used. Repair within the project's compatible versions and rerun affected checks. Avoid automatic forced upgrades that may break the website.

For backend interactions, validate inputs on the server, encode output appropriately, and check authentication and authorization separately. Consider abuse controls for public forms or AI endpoints. An OpenAI API key belongs on the server; publishing a static site does not provide a secret server environment.

Check HTTPS and applicable security headers at the actual hosting layer. Collect only the data the feature needs, and explain its destination and retention. Do not claim legal compliance from a code scan.

Report each finding with its location, plausible impact, fix and verification. State review scope, tools used, unresolved findings and inaccessible surfaces. A clean scan is evidence about that scan's scope, not a guarantee that the website has no vulnerabilities. Do not scan third-party systems or deploy changes outside the authorized task.
Back to the chapter start