Status: Elixpo is applying to be a mentoring organisation for Google Summer of Code 2027. Google announces accepted organisations after the application period.

Idea 6 of 6 · Developer tools

LixBlogs CLI automation contract v1

Version and specify the JSON output of the LixBlogs CLI so that scripts and AI agents built on it don't break silently.

Description

The problem this idea addresses and why it matters.

@elixpo/lixblogs-cli (v1.8.0 on npm) is used by people and by AI agents through --json --no-input, but its output shapes are not versioned or specified. An unnoticed change breaks every script and agent skill built on it.

Impact. A written, versioned and tested description of the output protects everyone who builds scripts and agent tools on the CLI.

Expected outcomes

What must exist at the end of the project.

  • A JSON Schema with a schemaVersion for every command's output and error envelope.
  • Snapshot tests for human-readable and JSON output.
  • Idempotent media-upload retries.
  • Shell completions and a doctor command.
  • A packed-tarball test matrix on three operating systems.

Stretch goals

Optional work, attempted only once the expected outcomes are complete.

  • CI detection of breaking contract changes.

Out of scope

Work that is not part of this project, even if it appears related.

  • New API endpoints.
  • Telemetry.
  • Offline sync.
  • Plugins.

How success is measured

The checks that confirm the work is complete.

  • The schemas validate every snapshot.
  • A forced duplicate upload creates exactly one record.
  • The packed artifact passes CI on three operating systems.

Material

The code, documentation and issues this idea builds on.

Code and documentation

Set up from the README; no private keys needed. If a step asks for a secret, report it as a setup issue. See configuration and access.

Related issues

No issues are linked to this idea yet. Ask about it at gsoc@elixpo.com.

Warm-up tasks

Complete at least one before you submit a proposal, and share the result as a pull request or by email to the programme address.

  1. Install the CLI from npm and run several commands with --json --no-input.
  2. Read the CLI source in packages/lixblogs-cli in the LixBlogs repository.
  3. Record every JSON output shape you observe, including errors, and send the notes to gsoc@elixpo.com.
  4. Open a small documentation or test improvement pull request in the repository, and respond to review until it is merged or closed.

Skills, size and mentors

Skills
  • Node.js
  • JSON Schema
  • Testing
Size
90 hours
Difficulty
Easy
Mentors

The primary mentor is the contributor's main contact; the backup mentor can step in. Send questions about this idea or the programme to gsoc@elixpo.com, and report defects as an issue in the repository. Mentors aim to reply within 48 hours on weekdays. GitHub Discussions for GSoC 2027 will open once Google announces the programme dates.

Terms used on this page

  • CLI: a command-line interface, a tool you use by typing commands in a terminal.
  • npm: the main place to publish and install JavaScript packages.
  • JSON: a common text format for structured data.
  • --json --no-input: options that make the CLI print JSON and never stop to ask questions, so scripts can use it.
  • Contract: a promise about the exact shape of the output.
  • JSON Schema, schemaVersion: a standard way to describe what JSON must look like, and a number in the output saying which version it follows.
  • Error envelope: the standard shape of the output when something goes wrong.
  • Snapshot test: a test that saves the output once and fails if it later changes.
  • Idempotent: doing it twice has the same effect as doing it once.
  • Shell completions: suggestions when you press Tab in the terminal.
  • Packed tarball, packed artifact: the exact package file that is published to npm.
  • Test matrix: running the same tests on several systems.
  • CI: tests that run automatically on every proposed change.
  • Telemetry: sending usage data back to the developers.

General terms such as mentor, proposal and pull request are defined in the glossary.