Skip to content

Add CLI-only EVO skills install lane#51

Draft
middleDuckAi wants to merge 3 commits into
evolution-cms:masterfrom
middleDuckAi:middleDuck/cli-skills-install
Draft

Add CLI-only EVO skills install lane#51
middleDuckAi wants to merge 3 commits into
evolution-cms:masterfrom
middleDuckAi:middleDuck/cli-skills-install

Conversation

@middleDuckAi
Copy link
Copy Markdown
Contributor

@middleDuckAi middleDuckAi commented Jun 4, 2026

Summary

Adds an optional CLI-only EVO skills install lane to evo install.

The MVP installs project-local skill definitions and a lockfile only. TUI selection, standalone evo install skills, and runtime command wiring remain future work.

This update also aligns the installer with the merged evo-skills manifest contract: payload files declared in file_hashes are verified before install and written into .evo-skills.lock.json.

The latest proof adds workflow autoload visibility: if a manifest entry declares workflow_id, workflow_file, and workflow_hash, the installer loads and validates the workflow definition, shows the planned stage order, and records workflow evidence in the lockfile. It does not execute workflow stages.

CLI MVP

evo install my-project --cli --skills=evo-skill-creator --skills-source=/path/to/evo-skills
evo install my-project --cli --skills=default --skills-source=/path/to/evo-skills
evo install my-project --cli --skills=none
evo install my-project --cli --skills=evo-skill-creator --skills-source=/path/to/evo-skills --skills-link
evo install my-project --cli --skills=evo-skill-creator --skills-source=/path/to/evo-skills --skills-dry-run

Workflow autoload proof example:

Workflow autoload planned for base-skill-cabbage: base-skill-cabbage.autoload.v1 (Seed -> Gate -> Map -> Contract -> Action -> Evidence -> Promotion).

Added

  • CLI flags: --skills, --skills-source, --skills-ref, --skills-link, --skills-dry-run.
  • CLI guard: --skills requires --cli.
  • installengine.Options skill fields.
  • Post-Extras install hook.
  • Plan-first copy/link/dry-run flow.
  • .evo-skills.lock.json writer.
  • Manifest file_hashes verification for declared skill payload files.
  • Lockfile file_hashes evidence for installed skills.
  • Workflow autoload metadata resolution: workflow_id, workflow_file, workflow_hash.
  • Workflow definition validation: schema, hash, autoload, no autorun, owner approval, blocked promotion, ordered stages, and no stage write actions.
  • Lockfile workflow evidence: workflow id/version/hash, resolved order, dry-run result, and no_write_actions_executed=true.
  • Unit tests for parsing, planning, copy, link, no-op, missing skill, unmanaged target guard, file hash mismatch, missing declared payload files, workflow autoload, and autorun rejection.

Governance

  • Review gates: Duck, Lizard, Sokil, Udod, and a human operator.
  • Forge is not a review gate and does not decide what enters the skill contract.
  • Forge is represented by implementation artifacts that must pass the review chain.
  • Canonical custom labels (status::in-progress, area::skills, review labels) are not currently creatable or applicable with the available token/role, so this PR records governance explicitly in the body until repo label permissions are delegated.

Boundaries

  • No TUI selector.
  • No standalone evo install skills alias in this PR.
  • No runtime command generation.
  • No workflow stage execution by autoload.
  • No script execution from installed skills.
  • No production project mutation in tests.
  • /Users/dmi3yy/PhpstormProjects/Extras/evoDemo was not used.

Validation

go test ./internal/engine/install
go test ./...
git diff --check

Native installer smoke in the order workspace:

  • Dry-run: --skills=evo-skill-creator --skills-dry-run wrote no target files and no lockfile.
  • Local link: --skills=evo-skill-creator --skills-link created a symlink target and lockfile with payload hashes.
  • Production copy: --skills=default --skills-ref=8ebbdb3 copied evo-skill-creator and evo-git-workflow, installed SKILL.md plus agents/openai.yaml, and wrote lockfile file_hashes for both skills.

Workflow autoload proof in the order workspace:

  • Dry-run: --skills=base-skill-cabbage --skills-dry-run showed workflow order and wrote no skill files.
  • Copy smoke: --skills=base-skill-cabbage --skills-ref=workflow-autoload-local wrote lockfile workflow evidence.
  • Lockfile records workflow_id=base-skill-cabbage.autoload.v1, autorun=false, promotion_allowed=false, and no_write_actions_executed=true.

Evidence

Order evidence:

/Users/dmi3yy/PhpstormProjects/skills/orders/evo-install-skills/reports/native_go_demo_smoke_2026-06-05.md

Workflow autoload evidence:

/Users/dmi3yy/PhpstormProjects/skills/orders/evo-install-skills/reports/workflow_autoload_gate_2026-06-05.md

Linked issue: #50

@middleDuckAi middleDuckAi changed the title [Draft] Add CLI-only EVO skills install lane Add CLI-only EVO skills install lane Jun 5, 2026
@middleDuckAi
Copy link
Copy Markdown
Contributor Author

Workflow autoload rework smoke was re-run against this CLI-only install lane.

Current status: still draft / in progress until reviewed and merged.

No installer code changes were needed in this pass.

Checks passed from the installer worktree:

go test ./internal/engine/install
go test ./...
git diff --check

Smoke evidence:

  • run id: workflow-autoload-ddocs-rework-20260605-191212;
  • dry-run exit code: 0;
  • copy exit code: 0;
  • link exit code: 0;
  • dry-run did not create core/custom/skills;
  • copy installed base-skill-cabbage as a directory;
  • link installed base-skill-cabbage as a symlink;
  • evoDemo guard stayed clean;
  • lockfiles record workflow_id, workflow_hash, resolved stage order, and no_write_actions_executed=true.

Evidence report:

orders/evo-install-skills/reports/ddocs-first-workflow-autoload-rework-20260605.md

Boundary preserved: workflow autoload makes workflow metadata visible, but does not autorun workflow stages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant