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
schemaVersionfor every command's output and error envelope. - Snapshot tests for human-readable and JSON output.
- Idempotent media-upload retries.
- Shell completions and a
doctorcommand. - 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
- Repository: elixpo/blogs.elixpo
- Setup instructions (README)
- Contribution guidelines (CONTRIBUTING)
- Codebase overview
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.
Set up this project: see Warm-up for the exact commands, how to tell they worked and known limitations. No private keys needed.
- Install the CLI from npm and run several commands with
--json --no-input. - Read the CLI source in
packages/lixblogs-cliin the LixBlogs repository. - Record every JSON output shape you observe, including errors, and send the notes to gsoc@elixpo.com.
- 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
- Size
- 90 hours
- Difficulty
- Easy
- Mentors
Divyanshu- Primary mentor
Ayushman Bhattacharya- Backup mentor
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.