Context
We’re debating whether ai4c should be:
- a full Python CLI/framework,
- mostly
just wrappers over existing CLIs (linkml-*, deep-research-client, etc.), or
- 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
- What must be stable across projects: command names, or only outcomes?
- How much project-specific customization is expected in practice?
- Should customization be mostly declarative (
ai4c.yaml) vs hook scripts?
- Should CI call
ai4c directly or continue through just?
- 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.
Context
We’re debating whether
ai4cshould be:justwrappers over existing CLIs (linkml-*,deep-research-client, etc.), orThe 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:
dry-run, validate-before-apply),Proposal (lean + agent-first)
Use a hybrid model with single source of truth in config:
ai4c.yamldefines tasks/datatypes/entry resolution.ai4cexecutes shell-native tasks (thin router over existing CLIs).justfacade callsai4c(never authoritative).To avoid drift:
.ai4c/commands.justand is always overwriteable,project.justonly,justfileimports both.Decision questions
ai4c.yaml) vs hook scripts?ai4cdirectly or continue throughjust?Suggested v1 scope
ai4ctask router + aliases:validate,research run,render,export.ai4c just syncto regenerate.ai4c/commands.just.Out of scope for v1