Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>AI Journal Commit FormNew to Visual Studio Code? Get it now.
AI Journal Commit Form

AI Journal Commit Form

Ali Shakiba USYD

|
121 installs
| (1) | Free
Document how you used AI (prompts, accuracy, verification and reflection) and commit it with your code from Source Control.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

AI Journal for VS Code

Document how you used AI and commit it alongside your code, without leaving Source Control.

AI Journal adds a guided form to VS Code's Source Control view. Before you commit, it asks which AI tool you used, what you asked it, how accurate it was, how you checked its answers and what you learned. Your answers are saved as structured JSON in the commit message, so your Git history records your code and how you used AI to write it.

Project site · Web version of AI Journal · Author: Ali Shakiba

Filling in an AI Journal entry and writing a commit message

Features

  • Commit with AI Journal. A button in the Source Control title bar opens a step-by-step form: context, interaction log and reflection. Your entry becomes the commit message.
  • Record each prompt. For every prompt, record why you asked it, what the AI answered, how accurate the answer was, what you changed and how you verified it.
  • Autofill from a chat. Paste a shared Gemini or Copilot link, or upload a Cogniti conversation export (.xlsx), to fill in the interaction log automatically.
  • Write a real commit message. You write your own commit message, with examples such as feat: … and fix: … shown as a guide.
  • Don't lose your work. The button only works when you have staged changes. If your changes get unstaged before you commit, your entry is saved and restored the next time you open the form.
  • Snapshot with AI Journal. Saves all your current work to a new aijournal_<timestamp> branch, then puts you back on your branch exactly as you left it.
  • Customise the form (instructors). Choose which screens and fields appear, list your own options, prefill values and add conditional questions. All of this is set in one JSON schema that you can share with a class.

Getting started (students)

  1. Make your changes, then stage the files you want to commit (the + next to each file in Source Control).
  2. Click the Commit with AI Journal (pencil) button in the Source Control title bar.
  3. Fill in each screen. Required fields are marked with a red asterisk (*), and Next becomes available once they are complete.
  4. On the last screen, click Commit Message. Write a short message describing your change, then click Confirm.

Your staged files are committed with your journal entry attached. The first line is your commit message, and the JSON entry follows it.

Screenshots

Interaction log Commit message
Interaction log step with accuracy, verification and confidence Commit message dialog with validation and example messages
Context Nothing staged
Context step with task, AI tool and model Banner shown when no changes are staged

Customising the form (instructors)

Run AI Journal: Customise Form Schema from the Command Palette and choose one of the following:

  • Create schema file in this repository. Writes the built-in form to .aijournal/form-schema.json. Commit this file to your starter repository so every student gets the same form. This is the recommended option for a class.
  • Copy default schema into workspace settings or user settings. Stores the schema in settings.json under promptLogger.formSchema.

When a schema file exists, it is used ahead of the settings. Changes take effect straight away, even in a form that is already open. Schema files under .aijournal/ get autocomplete and validation. If a schema is invalid, students see a warning and the built-in form is used.

Example schema

{
  "id": "elec5308-2026",            // written to every entry as schemaId
  "version": 1,                     // written as schemaVersion
  "commitMessage": {
    "minLength": 10,
    "examples": ["feat: add password strength check to the sign-up form", "fix: ..."]
  },
  "screens": [
    {
      "id": "context",
      "title": "Context",
      "description": "What are you working on?",
      "fields": [
        { "key": "course", "type": "text", "hidden": true, "default": "ELEC5308" },
        { "key": "taskId", "type": "select", "label": "Task", "required": true, "options": ["Lab 1", "Lab 2"] },
        { "key": "tool", "type": "select", "label": "AI Tool", "required": true, "optionsFrom": "aiAgentOptions" },
        { "key": "customTool", "type": "text", "label": "Specify Tool", "required": true, "showIf": { "field": "tool", "equals": "Other" } }
      ]
    }
  ]
}

Screens

Each screen has an id, a title, an optional description and a list of fields. Set "hidden": true on a screen to skip it. Its fields are still written to the entry, but they only ever contain their default, or "" if they have none. Values the student entered earlier are never used for them. The built-in form hides its Identity screen (Student ID and Group ID) this way. To remove those fields from the entry completely, delete the screen.

Field types

Type Use
text, textarea, url Free text
select, radio Choose one option
combobox Choose an option or type your own
checkbox Yes / no
likert Rating scale (min, max, minLabel, maxLabel)
group Repeating items, each with its own fields (minItems, itemLabel, addLabel)
conversationUpload Fills a group from a Cogniti .xlsx export (target, promptField, responseField)
notice Static information box (not saved)

Field options

Option Effect
key Name of the field in the entry. Dotted keys such as metaReflection.synthesis create nested objects.
label, help, placeholder Text shown to the student
required The student must fill the field in before moving on
default Prefilled value
readOnly Shown, but can't be changed
hidden Not shown; its default is saved
remember Remembers the student's last answer for next time
options / optionsFrom Fixed list, or a named list: aiAgentOptions, intentOptions (from settings) or languages
presets Picking an option also sets other fields, e.g. { "Cogniti.ai": { "modelVersion": "GPT-5.2" } }
showIf Shows the field only when a condition holds: { "field", "equals" \| "notEquals" \| "in" \| "notIn" \| "filled" }, or an array of conditions. Inside a group, the item's own fields are checked first.
autofetch (groups) { "linkField": "link", "promptField": "prompt", "responseField": "response" } fills the group from a shared Gemini or Copilot link

Commit message rules

Students must write their own commit message. commitMessage.minLength sets the minimum length (default 10). commitMessage.examples replaces the examples shown under the box, and a message that just repeats an example is rejected.

What gets saved

Every field defined in the schema appears in the entry. A field left blank, or hidden by showIf, is saved as "". Each item in a group lists every sub-field. The entry also includes id and createdAt, plus schemaId and schemaVersion when the schema sets them. Because every entry has the same set of keys, journals from a whole class can be analysed together.

Commands

Command Description
Commit with AI Journal Opens the journal form and commits your staged changes. Available only when changes are staged.
Snapshot with AI Journal Commits all current work to a new aijournal_<timestamp> branch and restores your branch afterwards
AI Journal: Customise Form Schema Creates a schema file, or copies the built-in schema into your settings

Settings

Setting Default Description
promptLogger.schemaFile .aijournal/form-schema.json Schema file, relative to the repository root. Used whenever it exists.
promptLogger.formSchema {} Schema written inline in settings. Leave it empty to use the built-in form.
promptLogger.intentOptions built-in list Options for fields with "optionsFrom": "intentOptions"
promptLogger.aiAgentOptions built-in list Options for fields with "optionsFrom": "aiAgentOptions"

Privacy

  • Your journal entry is saved only in your Git commit message (once you commit) and in VS Code on your computer.
  • Unfinished drafts, and entries waiting for staged changes, are stored locally in VS Code.
  • The extension collects no telemetry.
  • Autofetch sends the shared chat link you paste to our pilot parsing service (shared-chat-parser.vercel.app) to read the conversation. It does not collect any data and may not work properly. Use it only for chats you are happy to share, and leave the link empty if you'd rather type your prompts in by hand.
  • Don't include personal information in your prompts or in the AI's responses.

Requirements

  • VS Code 1.90 or later
  • The built-in Git extension enabled, and a folder that is a Git repository

About

AI Journal is part of the Beyond Declaration project, which explores how students can document and reflect on their use of generative AI rather than just declare it. A web version is available for logging AI use outside VS Code.

Created by Ali Shakiba. Report issues and suggestions on GitHub.

License

AI Journal is free software, licensed under the GNU General Public License v3.0.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft