Own productInternal
Expert checklists, packaged so AI applies them the same way every time
Custom Claude skills that turn specialist know-how, from interface auditing to Lithuanian tax law, into instructions an AI assistant follows consistently.
- Industry
- AI enablement
- What it shows
- Claude skills, Knowledge packaging, Quality assurance
- Year
- 2026
- Status
- Internal
In numbers
- audit categories, from typography to accessibility
- 15
- product profiles that adjust the rules
- 4
- the score it gave our own old website
- 30/100
Figures come from the project’s own files and records.
What changes
The steps people did by hand, and the route the work takes now.
A new page needs a design review
Before
- Wait for a senior designer
- Check against a list in their head
- Write up the findings
- Hope nothing was missed
With AI
- Claude loads the audit skill
- A scored report with a fix for each finding
The same standard on every review
The problem
Ask an AI assistant to review a design or answer a tax question twice and you can get two different standards. The expertise that makes an answer good, a senior designer’s checklist or a tax adviser’s habit of citing the law in force, usually lives in someone’s head.
What we built
Skills: packages of instructions, reference material and worked examples that a Claude assistant loads when a task calls for them. The one shown here audits web interfaces across 15 categories, from broken layouts and contrast to generic AI-looking design, and scores the result with the arithmetic shown.
We ran it on this website before rebuilding it. The old site scored 30 out of 100: its contact form silently discarded every message and keyboard focus was invisible. The new site was built with the same skill checking every page.
Other skills in use
- Lithuanian tax law: answers from the primary law in force, with exact article citations and the date of the edition used.
- UK CV writer: produces ATS-friendly CVs to UK conventions. It is the drafting engine inside our application agent.
- Anti-AI writing: strips the filler and formulaic phrasing that makes text read as machine-written. This site’s copy went through it.
Inside a skill
Score the real audit yourself, open each skill to see what it is made of, and run the CV skill’s checks on passing and failing inputs.
The previous arkira.ventures
The findings
BlockerThe contact form sends nothingFixed now
- Found
- The submit handler stops the form, shows a thank-you alert and resets it. Nothing is sent anywhere.
- Why
- Every visitor who fills it in believes they made contact. The lead is silently lost.
- Fix
- A real submission path with Netlify Forms, inline success and error states, and a no-JS fallback.
- Prevent
- A Playwright test that submits the form on the deploy preview.
- Now
- Netlify Forms, with a no-JS fallback that posts to a thank-you page. src/components/BriefForm.astro
BlockerKeyboard focus is invisibleFixed now
- Found
- Buttons set outline: none with no :focus-visible replacement anywhere.
- Why
- Keyboard users cannot see where they are on the page (WCAG 2.4.7).
- Fix
- One global :focus-visible outline in the accent colour, never removed.
- Prevent
- axe-core in Playwright, plus a keyboard walk that captures focus on each control.
- Now
- One global :focus-visible outline, 2px in the accent colour. src/styles/global.css
CriticalMain button contrast is 4.27:1Fixed now
- Found
- Primary button text on indigo measures 4.27:1. Indigo link text measures 4.40:1.
- Why
- Below the 4.5:1 AA floor on the most important control.
- Fix
- A new palette: dark text on the amber accent.
- Prevent
- Contrast recorded next to each colour token, and the axe contrast rule in CI.
- Now
- Dark text on the amber accent measures 10.9:1. src/styles/global.css
CriticalMenu button has no label, 21 × 28 pxFixed now
- Found
- The mobile menu button is an icon with no accessible name and no expanded state.
- Why
- Screen readers announce an unnamed button, and the target is far below 44px.
- Fix
- A labelled button with a 44 × 44px hit area.
- Prevent
- The axe button-name rule, and a target-size check at 360px.
- Now
- A visible Menu label on a 44px target. src/components/Header.astro
CriticalPlaceholder text left in the TermsFixed now
- Found
- The Terms of Service read "laws of [Jurisdiction]", and no legal entity is named anywhere.
- Why
- Placeholder text in a legal document undermines trust on a page whose job is trust.
- Fix
- Real terms and privacy pages, and a footer with the company details.
- Prevent
- A build check that fails on [Placeholder] patterns in the output.
- Now
- Written terms and privacy pages, with no placeholders. src/pages/terms.astro
WarningGeneric AI template look
- Found
- Gradient headline text, 30 floating particles, three six-card grids in a row, and two-letter text icons.
- Why
- It reads as a template, so the brand is invisible.
- Fix
- A new art direction with real product footage and varied section layouts.
WarningNo reduced-motion handlingFixed now
- Found
- The particles loop forever and sections slide in, with no prefers-reduced-motion check.
- Why
- People with vestibular disorders get constant motion and no way to stop it.
- Fix
- All non-essential motion gated behind prefers-reduced-motion.
- Now
- Page transitions and smooth scrolling run only without a reduced-motion preference. src/styles/global.css
WarningNo description, preview or canonical tagsFixed now
- Found
- The head held only charset, viewport and a title.
- Why
- Poor search snippets, and blank previews when the link is shared.
- Fix
- Per-page SEO tags, generated preview images, a sitemap and structured data.
- Now
- Description, canonical and Open Graph tags on every page. src/layouts/Base.astro
WarningThe email address is not a linkFixed now
- Found
- The address was plain text in a span.
- Why
- Visitors cannot tap it to write, so the fallback channel fails on phones.
- Fix
- A mailto: link.
- Now
- A mailto: link in the footer. src/components/Footer.astro
WarningSmall grey text at 3.90:1Fixed now
- Found
- The tertiary text colour measures 3.90:1 on the surface colour and is used for small text.
- Why
- Small text below 4.5:1 is hard to read on a phone outdoors.
- Fix
- A muted colour that measures 5.8 to 6.7:1 on every surface.
- Now
- The muted colour #9A9892 measures 5.8 to 6.7:1. src/styles/global.css
PolishA bar crosses the hero headline at 375px
- Found
- A decorative line runs through the headline on small phones.
- Why
- It cuts across the first words a visitor reads.
- Fix
- Move or remove the decoration.
PolishButtons animate every property
- Found
- transition: all on buttons animates layout properties too.
- Why
- Layout animation costs frames on slower phones.
- Fix
- Transition only colour, background colour and transform.
Fixes that stop it coming back
- 1A Playwright and axe-core suite run before every pushNow: axe-core (WCAG 2.2 AA) runs in Playwright on every page at 360 and 1440px.scripts/a11y.mjsscripts/live-check.mjs
- 2Tokens-only colour, with measured contrast next to each tokenNow: The default palette is cleared, and each colour token carries its measured contrast.src/styles/global.css
- 3Lighthouse thresholds that fail the deployNow: Every deploy fails if accessibility, best practices or SEO drop below 95.netlify.toml
- Any Blocker forces “Do not ship”, whatever the score.
- The score is 100 minus the deductions, and the arithmetic is always shown.
- An escalated finding replaces its deduction. It never counts twice.
- When unsure between two severities, pick the lower one and say why.
- audit categories
- 15
- reference files
- 14
- severities, each with a fixed deduction
- 4
- product profiles
- 4
- pre-flight checks while writing code
- 17
- personas walked before the checklist
- 3
- ui-ux-audit/
- SKILL.mdmodes, scoring, report, pre-flight
- references/
- 7 category checklists15 categories
- user-simulation.mdwalk it as a person first
- durable-fixes.mdfailure to tooling map
- examples.mdworked findings, a model report
- 4 profile fileslanding, dashboard, shop, kids
- Never deliver a CV while check_cv.py reports a single FAIL.
- Any number not in the master profile is treated as invented.
- A final page under about 55% full fails.
- A gap of more than five months, or a dropped current role, fails.
- An Interests or Hobbies section fails, in English or Lithuanian.
- reference files
- 6
- scripts
- 3
- areas check_cv.py tests
- 9
- pages of A4, the target length
- 2
- must-have keywords, the minimum
- 75%
- FAILs allowed before delivery
- 0
- uk-cv-writer/
- SKILL.mdworkflow and the hard gate
- references/6 files
- integrity.mdoptimise, never fabricate
- scripts/
- build_cv.pyrenders the .docx
- check_cv.pythe QA gate
- check_grounding.pythe anti-fabrication gate
- assets/schema, profile template
- Don’t over-edit: a strong draft gets the few needed cuts, then stops.
- Keep the author’s voice and meaningful hedging in formal writing.
- Never tell anyone their text “is” AI or will pass a detector.
- Reread the rewrite and fix the tells that survived.
- modes: rewrite or detect only
- 2
- checks, in order of diagnostic power
- 5
- severity tiers, P0 to P2
- 3
- context profiles, from academic to social
- 5
- word tiers
- 3
- reference files
- 2
- avoid-ai-writing/
- SKILL.mdmodes, priority order, profiles
- references/
- word-lists.mdthree tiers, used last
- british-english.mdspelling and punctuation
Checks that gate the output
- Professional Summary
- Skills
- Work Experience
- Education
- Professional Summary
- Skills
- Work Experience
- Education
- Interests
- Support agentSep 2018 to Feb 2021
- Support leadApr 2021 to now
- Support agentSep 2018 to Feb 2021
- Support leadNov 2021 to now
- Zendesk
- SLA
- escalation
- onboarding
- reporting
- stakeholder management
- peak season
- coaching
- Zendesk
- SLA
- escalation
- onboarding
- reporting
- stakeholder management
- peak season
- coaching
What it shows
Every team has experts whose judgement is hard to scale. Packaging that judgement as a skill means everyone’s assistant applies the same standard, and it improves in one place when the rules change. We build these for clients as part of enablement.
Under the hood
- Claude
- Markdown skill packages
- Reference libraries
01Trigger
The skill describes when it applies, so the assistant loads it for the right requests without being asked.
02Modes
A full scored audit, a quick review, or silent prevention while code is being written.
03References
Detailed checklists load only when a category is in scope, keeping the assistant focused.
04Profiles
Rules shift by product type. A children's app gets bigger touch targets than an admin dashboard.
05User first
Before the checklist, the assistant walks the page as real people would, including a keyboard user on a slow phone.
06Report
Findings by severity with the score arithmetic shown, a concrete fix for each, and a check that stops it returning.