Skip to content

ai4c CLI strategy: trust, drift, and hybrid command model #69

@cmungall

Description

@cmungall

Context

We’re debating whether ai4c should be:

  1. a full Python CLI/framework,
  2. mostly just wrappers over existing CLIs (linkml-*, deep-research-client, etc.), or
  3. a null model with no framework (just markdown instructions + agents).

The pain point is real: generated templates (justfile/ODK-like) drift when users or agents customize them.

Why this matters

A markdown-only model gives a narrative contract, but not an executable one.
A small standard command surface gives trust primitives:

  • predictability (same command names / intent across projects),
  • verifiability (runnable outputs, not just prose),
  • reproducibility (human + agent reruns),
  • auditability (what exactly ran),
  • safer defaults (dry-run, validate-before-apply),
  • less prompt ambiguity during handoffs.

Proposal (lean + agent-first)

Use a hybrid model with single source of truth in config:

  • ai4c.yaml defines tasks/datatypes/entry resolution.
  • ai4c executes shell-native tasks (thin router over existing CLIs).
  • optional generated just facade calls ai4c (never authoritative).

To avoid drift:

  • generated file lives at .ai4c/commands.just and is always overwriteable,
  • user/agent custom logic lives in project.just only,
  • top-level justfile imports both.

Decision questions

  1. What must be stable across projects: command names, or only outcomes?
  2. How much project-specific customization is expected in practice?
  3. Should customization be mostly declarative (ai4c.yaml) vs hook scripts?
  4. Should CI call ai4c directly or continue through just?
  5. What is the minimum universal v1 command set?

Suggested v1 scope

  • Minimal ai4c task router + aliases: validate, research run, render, export.
  • Shell-first execution, structured logging, no heavy plugin framework.
  • Optional ai4c just sync to regenerate .ai4c/commands.just.

Out of scope for v1

  • Rich plugin ecosystem.
  • Full template-managed project lifecycle.
  • Domain-specific bespoke validators in core.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions