Granular 4-phase, 4-role GDS Service Standard assurance skills, panel orchestrator, and synthesis engine.
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
This plugin 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. A fifth skill writes the report.
Use it on a pack of evidence for one service at one phase. The blank files, the fictional example, and the report downloader ship in this skill as scripts. Run the scripts. They write the folders into the current project. Copying a folder from the gds-assessor project, or from any other project, leaves the files outside this project.
Give these three steps, in this order. Do not stop after the first.
create-example.py, then assess docs/examples/apply-for-a-blue-badge/alpha.scrape_gds_reports.py from their project root. It writes docs/past-assessments/. Until that exists, an assessment has no published reports to cite.create-evidence-kit.py. The default folder is docs/evidence-kit.The sections below are the commands and the detail for those three steps.
From a project that should run assessments:
tessl install service-factory/gds-assessment-pluginThe registry package contains the skills, the rules, and this guide. It does not contain the published GOV.UK assessment reports. A project has no past assessments until it generates them. The panel can still score a service. It then has no published precedent to cite.
The blank templates are evidence-kit/ in this skill directory. create-evidence-kit.py sits next to this file. When someone asks for the kit, run that script and write into the folder they name. Use docs/evidence-kit when they do not name one.
From the skill directory:
python3 create-evidence-kit.py /path/to/project/docs/evidence-kitOne phase only:
python3 create-evidence-kit.py /path/to/project/docs/evidence-kit --phase alphaThe script leaves files that are already there. Pass --force only when the blanks should replace them.
The fictional Alpha pack is stored in this skill. It is not already in the user's project. create-example.py sits next to this file. When someone wants to see the plugin work, run that script first. It writes Northshire Council, Apply for a Blue Badge, into the project. This is not the real Blue Badge service.
From the skill directory, with the path to their project:
python3 create-example.py /path/to/project/docs/examples/apply-for-a-blue-badgeIf they do not name a folder, run it from their project root. The default destination is docs/examples/apply-for-a-blue-badge. The script leaves files that are already there. Pass --force only when the example should replace them.
Then assess the alpha folder the script created. Start with assessment-panel-orchestrator. The first message is a question in the chat. A point that would be Not Met is always a question. Ask one question, then wait for the reply. Keep asking until the reply names a record, the reply is only anecdotal, or the team says to skip. A story with no record leaves the evidence outstanding. Store the full exchange in panel/dialogue.md beside the phase folder after the question is closed. Do not score the README beside the alpha folder. That file says what the run should find, and what the team would do to pass.
Run an Alpha assessment of docs/examples/apply-for-a-blue-badge/alpha. Use assessment-panel-orchestrator, then the four Alpha assessor skills, then assessment-report-synthesis. Cite past assessments through the gds-assessment-reports tools. Do not read docs/examples/apply-for-a-blue-badge/README.md while scoring.Fill the phase the service is in. Do not fill a later phase early. Production code in Discovery, or a production environment treated as the beta platform in Alpha, fails that phase.
| Folder | Fill it when |
|---|---|
discovery/ | The team is defining the problem and can still stop, or join another service |
alpha/ | The team is testing risky ideas with throwaway prototypes and spikes |
beta/ | Real users are on a private beta |
live/ | The service is running, and the team can show operation, research, and published performance since the last assessment |
coverage.md in the created kit is the same map, plus the red lines each pack is there to catch.
Where a template asks for something the team does not have, they write Not held and the owner. An empty heading is missing evidence. The panel can only score what is in the pack.
panel/dialogue.md sits beside the phase folders. It stores the dialogue after it has happened in the chat. The panel asks one question at a time and waits. Later assessments read that file with the other evidence.
Each phase folder has its own README.md. Read that before filling the files.
The decision at the end can be to proceed, to join another service, or to stop.
| File | What it holds | Points |
|---|---|---|
00-service-context.md | The user outcome, and the decision to proceed, join, or stop | 2 |
research/cohort-map.md | Who matters to the problem, and who you have not seen | 1 |
research/session.md | One file per visit. Copy it and name the copy with the date | 1, 2 |
design/as-is-journey.md | The journey as people do it today, including workarounds | 2 |
design/channels.md | Telephone, paper, and face to face, as they work now | 3 |
decisions/hypotheses.md | The questions Discovery still has to answer | 7 |
decisions/decision-log.md | A real choice to proceed, join, or stop | 7 |
team/team.md | Who is on the work, and who can still change direction | 6 |
technology/current-systems.md | Systems that exist today. No target architecture | 9, 11 |
technology/constraints.md | Limits other teams have confirmed | 9, 11 |
privacy/data-and-privacy.md | Data the current service holds, and who it is shared with | 9 |
platforms/platforms-to-test.md | GOV.UK platforms to try in Alpha | 13 |
Do not add prototypes, a schema, an accessibility audit, performance figures, or a runbook.
Prototypes and spikes are meant to be thrown away. Keep the Discovery journey and point at it. Do not redraw it as the future service.
| File | What it holds | Points |
|---|---|---|
00-service-context.md | The risky assumption, and the decision you want from the panel | 2 |
research/cohort-map.md | The people the concept puts at risk, and whether you tested with them | 1 |
research/session.md | One file per concept test | 1, 2 |
design/channels.md | One other channel, sketched or scripted | 3 |
design/prototypes.md | More than one approach, including one you threw away, and an assisted-digital sketch | 2, 4 |
decisions/hypotheses.md | The hypotheses, including one that failed | 7 |
decisions/decision-log.md | Options you discarded, and whether the sponsor was there | 7 |
team/team.md | Who is on Alpha, and who would staff a beta | 6 |
technology/spikes.md | Time-boxed spikes, and whether the code was thrown away | 8, 11 |
technology/buy-versus-build.md | What you would buy, reuse, or build, and what you reject | 11, 13 |
technology/risk-register.md | What a beta team would still have to deal with | 8, 9, 11 |
privacy/data-and-privacy.md | Synthetic data, and anything a beta must not copy | 9 |
platforms/commitments.md | GOV.UK platform choices you have already made | 13 |
Point 5 is not a fail at Alpha. Record the assisted-digital sketch in design/prototypes.md. Do not commission a WCAG audit. Do not describe a production environment as the beta platform.
The private beta build is the evidence. The panel scores all 14 points. Assistive-technology sessions and an independent WCAG 2.2 AA audit are both required. The audit does not replace the sessions.
| File | What it holds | Points |
|---|---|---|
00-service-context.md | The task a user must finish, including steps another team owns | 2 |
research/cohort-map.md | Who has used the private beta, including people using assistive technology | 1 |
research/session.md | One file per session. Name the screen reader, magnifier, or speech input when it was used | 1, 2, 5 |
design/journey.md | The journey on the current build | 2 |
design/channels.md | The other channels, staffed, and one completed case | 3, 5 |
decisions/hypotheses.md | What the private beta is still testing | 7 |
decisions/decision-log.md | Cuts from the backlog, and the public onboarding plan | 7 |
team/team.md | The civil servant who owns the product | 6 |
technology/architecture-decisions.md | One heading per decision, including the option you reject | 11 |
technology/buy-versus-build.md | What you chose, carried forward from Alpha | 11, 13 |
technology/risk-register.md | Risks still open | 8, 9, 11 |
privacy/data-and-privacy.md | The privacy assessment, the pipeline scan, and a rollback | 9 |
accessibility/accessibility.md | The sessions and the independent audit | 5 |
performance/performance.md | Completion, satisfaction, digital take-up, cost, and drop-off | 10 |
operations/operations.md | How you release, support, back up, and would leave. A drill can be planned | 8, 14 |
platforms/common-platforms.md | One Login, Notify, Pay, Forms, and the Design System | 13 |
platforms/open-source.md | The public repository, the licence, and a build a civil servant has run | 12 |
The disaster-recovery result is a Live requirement. Beta records the planned date.
Show that the service is being run and changed. Do not resubmit the beta pack. Points 2, 11, 12, and 13 stay on the previous evidence unless 00-what-changed.md says the purpose, journey, stack, or contract has changed.
| File | What it holds | Points |
|---|---|---|
00-what-changed.md | Whether the purpose, journey, stack, or contract has changed | 2, 11, 12, 13 when something material changed |
research/cohort-map.md | Who you have learned from since the last assessment | 1 |
research/session.md | One file per live session, tied to a measure or a release | 1 |
design/channels.md | Channels checked against the digital service, and a drop-off with an owner | 3, 4, 5 |
decisions/hypotheses.md | What live research is still testing | 7 |
decisions/decision-log.md | Releases tied to research, a measure, or an incident | 7 |
team/team.md | Civil servants who can change the service without the supplier | 6 |
technology/risk-register.md | Live risks, and when each one last showed up | 8, 9 |
privacy/data-and-privacy.md | The current privacy assessment, and a restore of this service's data | 9 |
accessibility/accessibility.md | The statement, open defects, and assisted-digital volumes | 5 |
performance/performance.md | The published figures | 10 |
operations/operations.md | Incidents, the drill result, and an exit you have tried | 8, 14 |
Tell the agent the phase and the path to the pack. For a Beta of a pack you copied to docs/evidence/receipt-of-waste/:
Run a Beta assessment of docs/evidence/receipt-of-waste. Use assessment-panel-orchestrator, then the four Beta assessor skills, then assessment-report-synthesis. Cite past assessments through the gds-assessment-reports tools.The agent should do this, and not import another phase's bar:
rules/gds-service-standard.md, rules/phase-expectations.md, and rules/past-assessments.md.assessment-panel-orchestrator. The first message is a question in the chat. Ask one question at a time and wait for the reply. A point that would be Not Met is always a question. Keep asking until the reply names a record, the reply is only anecdotal, or the team says to skip. Store the full exchange in panel/dialogue.md after the question is closed.SKILL.md and works through its lines-of-questioning.md. The red lines for the phase are in context/rubrics/.skills/assessment-report-synthesis.skills/assessment-report-synthesis/report-template.md. The synthesis skill writes it with skills/plain-english and edits it with skills/no-ai-slop. A story with no record, or a skipped question, leaves that point Not Met when the pack still lacks the record.| Phase | Lead | User research | Design | Technical |
|---|---|---|---|---|
| Discovery | 2, 6, 7 | 1 | 2, 3 | 9, 11, 13 |
| Alpha | 6, 7 | 1, 2 | 2, 3, 4 | 8, 9, 11 |
| Beta | 6, 7, 10 | 1, 2, 5 | 3, 4, 5, 13 | 8, 9, 11, 12, 13, 14 |
| Live | 6, 7 | 1, 10 | 3, 4, 5 | 8, 9, 14 |
Beta is the first phase that scores all 14 points. The technical skill also records point 5 when the independent audit is missing. At Live, points 2, 11, 12, and 13 are Not reassessed unless the service, the stack, or the contract has changed.
Each point is Met, Not Met, Not assessed, or Not reassessed.
Not assessed means the point is outside this phase. Not reassessed means Live left an unchanged point on its previous evidence. Neither fails the service.
The overall result is Not Met if any in-scope point is Not Met, or if a red line fired. A recommendation does not change a Met into a Not Met. There is no "met with conditions".
The failures that decide most packs:
The published plugin does not include other services' assessment reports. A new project gets none until someone generates the library. Without that library, the assessment still runs, and the report cites no published precedent.
scrape_gds_reports.py sits next to this file. This is step 2 when someone asks how to use the plugin. Run it from their project root so the files land in that project. Install the two libraries first:
pip install requests beautifulsoup4
python3 /path/to/gds-assessment-how-to/scrape_gds_reports.pyThe script reads the GOV.UK search index and writes one Markdown file per published service standard report into docs/past-assessments/reports/. It then writes a catalogue into docs/past-assessments/catalogue/. A full run takes a few minutes. It does not need to be run again before every assessment.
To rebuild the catalogue without downloading again:
python3 /path/to/gds-assessment-how-to/build_past_assessment_catalogue.py docs/past-assessmentsThe gds-assessment-reports server is reports_mcp_server.py next to this file. It reads docs/past-assessments in the project. Restart that server after the first download. During an assessment it returns at most eight reports, and it does not call GOV.UK.
In this plugin checkout, the same scripts keep using context/ when that library is already there.
.tessl-plugin
skills
alpha-assessor-design
alpha-assessor-lead
alpha-assessor-technical
alpha-assessor-user-research
assessment-panel-orchestrator
assessment-report-synthesis
beta-assessor-design
beta-assessor-lead
beta-assessor-technical
beta-assessor-user-research
discovery-assessor-design
discovery-assessor-lead
discovery-assessor-technical
discovery-assessor-user-research
gds-assessment-how-to
evidence-kit
alpha
beta
accessibility
decisions
design
operations
performance
platforms
privacy
research
team
discovery
live
accessibility
decisions
design
operations
performance
privacy
research
team
technology
panel
examples
apply-for-a-blue-badge
alpha
live-assessor-design
live-assessor-lead
live-assessor-technical
live-assessor-user-research