Skip to content
Responsible vibe coding A guide to publishing educational materials created with vibe coding

The VCER evaluation

What the VCER evaluation is

VCER stands for «vibe coding educativo responsable», the Spanish for responsible educational vibe coding. It is the evaluation proposed by the guide «Responsible vibe coding» to check whether an educational resource meets the essentials of the guide before it is published or used. It is suitable for any finished resource, one’s own or someone else’s, whether or not it was created following the guide.

The evaluation is carried out by an AI using a file of instructions that is downloaded from the guide. The AI reviews the code of the resource, scores each point of the rubric with 2, 1 or 0, justifies each score and proposes the three improvements that would raise the result the most.

How the result is calculated

The percentage is the sum of the scores divided by the maximum possible for the points the AI has been able to check. Content and personal data are disqualifying. From the percentage and those two points, one of these three results is obtained:

Result When it applies What it means
Recommended 70 % or more, with content and personal data scored and with no 0 in either of them or in accessibility The resource meets the essentials of the guide and can be used or published. The proposed improvements complete it.
Needs improvement Less than 70 %, or when the content or the personal data could not be checked, or accessibility has a 0 The resource has flaws that should be fixed before publishing or recommending it, although none of them rules it out. The report says what they are and what remains to be checked.
Not recommended A 0 in content or in personal data, whatever the percentage The resource has obvious errors in what it teaches or sends students’ data to services outside the school. It should not be used with students or published until it is fixed.

Limits of the evaluation

The AI only detects the errors it sees, especially in the content, and the result may vary depending on the model used. That is why the score is indicative and does not replace a review by a person. In addition, the result applies to the version of the resource that was evaluated, on the date of the evaluation.

How to evaluate a resource

The evaluation file, which appears below, is given to the AI together with the resource to be evaluated, and the AI is asked to «evaluate this resource according to the instructions». How to give it depends on where the resource is:

  • If it was created on a chatbot’s website or on an app-building platform, the file is attached, or its text pasted, in the same conversation, once the material is finished.
  • If it is in a folder on the computer or in a repository, the file is given to a coding agent or a code editor with AI opened in that folder. This is the most complete way, because the AI can read all the files of the project and, if it can run code, test the resource in the browser.
  • If only the published website is available, one’s own or someone else’s, a conversation with the AI is opened and the evaluation file and the code of the page, saved from the browser, are attached. If the website is made up of several files, the AI will only see the ones it is given, so it is advisable to obtain the complete code, for example from its repository, and evaluate it as in the previous case.

Download the file

View the instructions for evaluating
# Instructions for evaluating an open educational resource (VCER evaluation)

These instructions come from the guide «Responsible vibe coding», for
publishing educational materials created with vibe coding
(https://vibe-coding-educativo.github.io/vibe-responsable/en/).
They are for evaluating an existing resource, one's own or someone else's,
whether or not it was created following the guide.

## How to evaluate

- Work on the code of the resource I give you. If you do not have it, ask me
  for it before starting.
- Do not fix it: only evaluate it.
- Score each of the ten points with 2, 1 or 0 according to the VCER rubric
  (responsible educational vibe coding, from its Spanish initials), and
  justify each score with a sentence about what you have seen in the
  resource.
- If a point cannot be checked with what I have given you, leave it
  unscored and say what would be needed to check it.
- Before scoring, make a complete inventory, not a sample: every function
  that asks for or stores data about people and how it is exported or
  copied; every image, sound, video, icon and typeface in the project, and
  where it comes from (look at the images: a redrawn logo is still someone
  else's); and everything that is loaded from outside, and when (on opening,
  when something is pressed or in a new window).
- If the resource is published, evaluate that version or check that it
  matches the code you have been given. Record which version you have
  evaluated: the version tag and the commit if it is in a repository, or the
  address and the date of the evaluation if it is not.
- For point 5, if you can run code, open the resource in a browser and run
  an automated accessibility tool on it, such as axe-core, also with content
  loaded and not only on the initial screen. Do not count what is embedded
  from other sites. The tool does not check keyboard use: go through it with
  the Tab key. In the justification of the point, say what you have tested
  and how; if you have only been able to read the code, say so.

## VCER rubric

1. CONTENT (disqualifying)
   2: No errors are detected in what it teaches: the data, the definitions
      and the answers it accepts as correct.
   1: There is some minor inaccuracy in what it teaches.
   0: There are obvious errors in concepts, data or answers.
   This score only reflects the errors you have detected: list each one and
   point out what a person should check. Typos and formatting errors in the
   references do not count here: point them out separately.

2. PERSONAL DATA (disqualifying)
   2: It does not ask for data that identifies anyone, or it stores them
      only on the device and allows exporting without names; or it sends
      them only to a school service, with no keys visible in the code and in
      such a way that only the teacher or the school can read them. It has
      no analytics.
   1: It does not send students' data to outside services, but it stores
      names without an option to export without them, or the sending to the
      school's service is not well protected (keys in the code, an address
      that allows what is collected to be read).
   0: It sends students' data to a server outside the school, or it has
      analytics or tracking.
   If the resource handles real students' data, state that a review by a
   person with technical knowledge is advisable before using it.
   What is loaded or embedded from other servers (videos, audio, typefaces,
   libraries) is assessed in point 4, not here.

3. UNDERSTANDING WHAT IT DOES
   2: What it does, what it stores and what it communicates with can be
      described briefly, and the resource's statements match its code.
   1: Its operation can be understood, but there are parts whose purpose is
      unclear or it does not explain what it stores.
   0: There are functions or communications whose purpose cannot be
      explained, or what it declares does not match the code.

4. DEPENDENCIES
   2: What it loads or embeds from outside comes from well-known services
      and is recorded, and its own texts, images and data are inside the
      material.
   1: It loads or embeds external resources without recording them, or part
      of its own content (a video, an audio recording, a map) is only on another
      platform.
   0: The main content depends on an external service, or it loads code from
      unknown addresses.

5. ACCESSIBILITY
   2: It can be used entirely with the keyboard, the controls have labels,
      the images alternative text, the contrast is sufficient, it does not
      rely on colour and it adapts to a narrow screen.
   1: It fails in one or two of those aspects, without preventing its use.
   0: It fails in three or more, or it cannot be used with the keyboard.

6. THIRD-PARTY MATERIAL
   2: Each third-party element states its author, source and licence, and
      the licence allows it to be reused; or there is no third-party
      material.
   1: There is third-party material with a valid licence, but not fully
      credited.
   0: There is third-party material without a licence that allows reuse or
      without any attribution.

7. RECORD
   2: There is a log or a note with the important decisions and their
      reasons.
   1: There is documentation explaining how it is made, but not why.
   0: There is nothing.

8. USE OF AI
   2: It states that it was made with AI and what the person has checked.
   1: It states that it was made with AI, without saying what has been
      checked.
   0: It does not state it. If it is stated that no AI was used, it is not
      scored.

9. LICENCE
   2: Authorship and a free licence visible in the material, with a link. If
      it is a multi-file project, it includes the licence file.
   1: The authorship or the licence is missing, the licence is not free (NC
      or ND) or it does not link to its text.
   0: It states neither authorship nor licence.

10. REUSE
   2: The code can be obtained in full, it is understandable when read, with
      comments where needed, and there are instructions for modifying it.
   1: It can be obtained, but it is hard to understand without comments, it
      is partly compressed or it has no instructions for modification.
   0: It cannot be obtained, or it is obfuscated or compressed.

## Result

- Calculate the percentage: the sum of the scores divided by the maximum
  possible for the points scored.
- Give a result: «Not recommended» if point 1 or 2 has a 0, whatever the
  percentage; «Needs improvement» below 70 %; «Recommended» from 70 %, as
  long as points 1 and 2 could be scored and point 5 does not have a 0. If
  either of points 1 and 2 has been left unscored, the result is «Needs
  improvement» and states what remains to be checked; if point 5 has a 0, it
  is also «Needs improvement» and states what prevents its use.
- Start the report with a line such as «VCER rubric: Recommended (85 %)»,
  followed by another with the version evaluated, and add below it a
  sentence with what that result means:
  - Recommended: it meets the essentials of the guide and can be used or
    published; the proposed improvements complete it.
  - Needs improvement: it has flaws that should be fixed before publishing
    or recommending it, although none of them rules it out.
  - Not recommended: it has obvious errors in what it teaches or sends
    students' data to services outside the school; it should not be used or
    published until it is fixed.
- In the justification of point 3, include that brief description. In that
  of point 4, list the external addresses in the code and what each one is
  for, and say in simple words what would stop working when opening the
  downloaded copy on a computer without an internet connection. In that of
  point 6, list the third-party material.
- End with the three improvements that would raise the score the most.

## If the resource is mine

- Do this only if the resource is mine and you can modify its files. If you
  do not know whether it is mine, ask me when you finish the report. If it
  belongs to someone else or you cannot modify its files, do not mention it.
- Offer me these two things and do only the ones I approve:
  - If the project has its own folder, such as a repository, save the full
    report in a file called evaluacion-vcer.md, which replaces the one from
    a previous evaluation.
  - Add to the footer of the material, in its language, a mention with the
    result, such as «VCER evaluation of version 1.2: Recommended (85 %),
    October 2026», linked to an address like this one:
    https://vibe-coding-educativo.github.io/vibe-responsable/vcer/?r=recomendable&p=85&f=2026-10&v=1.2&t=Equivalent%20fractions&u=https%3A%2F%2Fejemplo.github.io%2Ffracciones%2F
- In the link, r is the result (recomendable, mejorable or no-recomendable,
  always written this way); p, the percentage; f, the year and month of the
  evaluation; v, the version evaluated; t, the title of the resource, the
  same one that appears in its footer, and u, its address. Encode t and u as
  is done in a web address.
- If the resource has no version number, remove «of version 1.2» from the
  mention and v from the link. If it is not published on the web, remove u
  from the link.
- The percentage is optional: offer me the mention with it and without it.
  Without the percentage, remove «(85 %)» from the mention and p from the
  link.
- If there is already a mention, update it with the new result.

## If I then ask you to fix it

- Before changing anything, tell me what you would change and wait for me
  to approve it. Do not change the content or how it works, unless I ask
  you to.
- If there is no decision log, write one that describes how the resource
  works now, and state that it was written afterwards.
- If the licence or the statement on the use of AI is missing, prepare the
  text for me to add it.

The AI scores each recommendation with the VCER rubric, gives a final percentage and proposes the three improvements that would raise the score the most. If it is then asked to fix it, it first proposes the changes and waits for them to be approved; it is advisable to save a copy beforehand. If the resource is one’s own, the AI also offers to save the report in the project and to add to the footer of the material a mention with the result, linked to this page.

The VCER rubric

Each point of the rubric checks one of the recommendations of the guide, which is developed in its chapter. This is the rubric used by the evaluation file:

VCER rubric: 2, met; 1, partly met; 0, not met
Recommendation210
1 Content (disqualifying)No errors are detected in what it teaches: the data, the definitions and the answers it accepts as correct.There is some minor inaccuracy in what it teaches.There are obvious errors in concepts, data or answers.
2 Personal data (disqualifying)It does not ask for data that identifies anyone, or it stores them only on the device and allows exporting without names; or it sends them only to a school service, with no keys visible in the code and in such a way that only the teacher or the school can read them. It has no analytics.It does not send students' data to outside services, but it stores names without an option to export without them, or the sending to the school's service is not well protected (keys in the code, an address that allows what is collected to be read).It sends students' data to a server outside the school, or it has analytics or tracking.
3 Understanding what it doesWhat it does, what it stores and what it communicates with can be described briefly, and the resource's statements match its code.Its operation can be understood, but there are parts whose purpose is unclear or it does not explain what it stores.There are functions or communications whose purpose cannot be explained, or what it declares does not match the code.
4 DependenciesWhat it loads or embeds from outside comes from well-known services and is recorded, and its own texts, images and data are inside the material.It loads or embeds external resources without recording them, or part of its own content (a video, an audio recording, a map) is only on another platform.The main content depends on an external service, or it loads code from unknown addresses.
5 AccessibilityIt can be used entirely with the keyboard, the controls have labels, the images alternative text, the contrast is sufficient, it does not rely on colour and it adapts to a narrow screen.It fails in one or two of those aspects, without preventing its use.It fails in three or more, or it cannot be used with the keyboard.
6 Third-party materialEach third-party element states its author, source and licence, and the licence allows it to be reused; or there is no third-party material.There is third-party material with a valid licence, but not fully credited.There is third-party material without a licence that allows reuse or without any attribution.
7 RecordThere is a log or a note with the important decisions and their reasons.There is documentation explaining how it is made, but not why.There is nothing.
8 Use of AIIt states that it was made with AI and what the person has checked.It states that it was made with AI, without saying what has been checked.It does not state it. If it is stated that no AI was used, it is not scored.
9 LicenceAuthorship and a free licence visible in the material, with a link. If it is a multi-file project, it includes the licence file.The authorship or the licence is missing, the licence is not free (NC or ND) or it does not link to its text.It states neither authorship nor licence.
10 ReuseThe code can be obtained in full, it is understandable when read, with comments where needed, and there are instructions for modifying it.It can be obtained, but it is hard to understand without comments, it is partly compressed or it has no instructions for modification.It cannot be obtained, or it is obfuscated or compressed.

Read the guide Creating with AI