CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

service-factory/gds-assessment-plugin

Granular 4-phase, 4-role GDS Service Standard assurance skills and synthesis engine.

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

README.md

GDS assessment plugin

Tessl plugin that assesses a UK public sector service against the Service Standard at Discovery, Alpha, Beta, and Live.

The panel is four disciplines — lead, user research, design, and technical — plus a synthesis skill that writes the report. Sixteen assessor skills cover the four phases. One skill, assessment-report-synthesis, merges them.

Run an assessment

  1. Confirm the phase. Do not let a later phase's bar leak backwards. The boundaries are in rules/phase-expectations.md.
  2. Run the four skills for that phase. Each one scores only the points named in its SKILL.md and works through its lines-of-questioning.md.
  3. Pass the four JSON outputs, the service name, and the phase to skills/assessment-report-synthesis.
  4. The report follows skills/assessment-report-synthesis/report-template.md. Overall result is Met or Not Met. Any in-scope Not Met, or any fired red line, makes the overall result Not Met.

Points outside the phase are Not assessed. At Live, unchanged points the panel does not own are Not reassessed. Neither is a failure.

Skills

PhaseLeadUser researchDesignTechnical
Discovery2, 6, 712, 39, 11, 13
Alpha6, 71, 22, 3, 48, 9, 11
Beta6, 7, 101, 2, 53, 4, 5, 138, 9, 11, 12, 13, 14
Live6, 71, 103, 4, 58, 9, 14

Beta is the first phase that scores all 14 points. The technical skill also records point 5 when the independent WCAG 2.2 AA audit is missing.

Red lines

Hard fails live in context/rubrics/. The ones that decide most panels:

  • Discovery. Production code, a component library, or a versioned schema is premature architecture. The team is still in the problem space and should not write production code. A decision to stop can still be a pass. See context/few-shot-examples/discovery-lead-stop.md.
  • Alpha. Production infrastructure, or a single design treated as signed off, fails the phase. Throwaway spikes with a risk register and a buy-versus-build log pass. See context/few-shot-examples/alpha-tech-spikes.md.
  • Beta. If no participant used assistive technology, point 5 is Not Met. Name the gap: assistive technology, JAWS, NVDA, screen reader. Design System use and an audit do not outvote that finding. See context/few-shot-examples/beta-ur-fail-assistive-tech.md.
  • Live. The panel needs an exercised incident runbook, a disaster-recovery drill result, a contract exit strategy, and a civil service team that can change the service.

Layout

.tessl-plugin/plugin.json          manifest
rules/                             always-on standard and phase boundaries
skills/                            16 assessor skills and the synthesis skill
context/rubrics/                   phase red lines
context/few-shot-examples/         curated exemplars, plus scraped reports if you ingest them
scripts/scrape_gds_reports.py      optional ingestion of published reports
evals/                             ground-truth assertions for four cases

Published reports

Curated exemplars in context/few-shot-examples/ are fictional and should be kept. To add real published assessments from GOV.UK, from this directory:

pip install requests beautifulsoup4
python scripts/scrape_gds_reports.py

The script asks the GOV.UK search API for every service_standard_report (the index currently lists about 500, across multiple pages) and writes one Markdown file per report into context/few-shot-examples/. It then rebuilds context/past-assessments/, one JSON catalogue per phase. Filenames are the report URL slug, so similarly titled reports do not overwrite each other. It will not overwrite the four curated exemplars. Run it from the plugin root so the output path resolves. A full run takes a few minutes because it pauses briefly between requests.

On an assessment, each skill reads the catalogue for its phase, opens at most eight comparable reports, and cites them. The rule is rules/past-assessments.md. Rebuild the catalogue without scraping again with python scripts/build_past_assessment_catalogue.py.

Checks

Ground-truth cases:

  • evals/test-discovery-premature-build.json — Discovery technical work that is already a build must fail, and the finding must call it premature architecture in the problem space.
  • evals/test-alpha-tech-spikes.json — disposable Alpha spikes pass.
  • evals/test-beta-ur-assistive-tech.json — Beta research with no assistive-technology users fails point 5.
  • evals/test-synthesis-beta-report.json — a point 5 failure becomes an overall Not Met report even when the other three assessors pass.

With the Tessl CLI, from this directory:

tessl skill lint
tessl skill review --optimize
tessl eval run

tessl eval run expects the plugin root (the directory that contains .tessl-plugin/plugin.json). The JSON files in evals/ are the regression assertions for this plugin's own skills. Tessl's hosted evaluator, if you use it, looks for scenario directories (task.md and criteria.json) and will not read those JSON files as scenarios.

Point titles

The 14 titles used in every report are fixed in rules/gds-service-standard.md. WCAG 2.2 AA is the non-negotiable bar on point 5 from Beta onwards. The mandatory performance measures are completion rate, user satisfaction, digital take-up, and cost per transaction, read with step-level drop-off.

README.md

tile.json