0026 Explicit Onboarding Skills In Default Core
Date: 2026-07-23
Status
Accepted and active.
Context
Decision 0020 kept the default installation small and excluded generic evaluation machinery. Application-legibility work then tested an explicit, repository-owned onboarding workflow against the brownfield e-inna-brain consumer.
The pilot produced two forward-tested skills:
$onboard-repositorymaps one real repository path, remains read-only on its first pass, and emits evidence-backed proposals; and$audit-onboarding-proposalindependently checks the producer transcript and exact proposed patches before application.
The frozen replay showed a direct improvement: replacing a stale installed instruction removed one obsolete command attempt. It also showed why the guardrails belong with the workflow: incomplete preflight, ownership omissions, and unsupported runtime claims remained visible rather than being promoted as product truth.
Keeping the skills only in a consumer experiment makes the learned workflow unavailable to the next installed repository. Auto-running them, however, would add hidden startup work and could inspect or propose changes when the user did not request onboarding.
Decision
- The default Harness core installs both skills under
.agents/skills/. - Both skills remain explicit-only through
allow_implicit_invocation: false. Installation does not invoke them and does not create a first-run hook. $onboard-repositoryis the user-facing entry point. Its first pass is inspection and proposal only; repository edits require exact user approval.$audit-onboarding-proposalis the independent verification companion. It remains read-only and does not grant approval by itself.- Their scripts and references are managed core files because they provide deterministic patch rendering, evidence transport, and validation for the two skills. They do not become mandatory steps for ordinary repository work.
- The skills may use Python when explicitly invoked. Core installation, updates, and ordinary work do not require Python. A missing runtime prerequisite must stop the invoked skill safely rather than trigger an installer-side dependency installation.
- This decision narrowly amends decision 0020. The installer still has one core profile; engineering wisdom remains an independent opt-in add-on. The core excludes generic benchmarks, trace scoring, orchestrators, application adapters, databases, and any consumer runtime.
Alternatives Considered
- Keep the skills only in the pilot consumer. Rejected because validated onboarding behavior would not reach newly installed repositories.
- Auto-run onboarding after installation. Rejected because installation cannot determine whether a repository is ready for inspection, which operational path the user wants mapped, or whether the current agent owns the necessary runtime state.
- Add a third installer profile. Rejected because the skills are generic repository workflow guidance, while another profile would recreate the feature-matrix problem rejected by decision 0020.
- Install only the producer skill. Rejected because the pilot repeatedly found plausible but unsupported proposal clauses that required an independent fail-closed audit.
- Remove deterministic scripts before promotion. Rejected because exact patch rendering and authenticated evidence transport fixed observed transcription and incomplete-preimage failures.
Consequences
Positive:
- A fresh Harness installation exposes a tested brownfield onboarding path.
- The first pass remains safe and approval-gated.
- Installed skills and their deterministic resources update through the same provenance-aware merge as the rest of the core.
- Ordinary tasks retain the compact
AGENTS.mdplusdocs/WORKFLOW.mdentry context because neither skill is implicitly invoked.
Tradeoffs:
- The default managed payload grows by two skills and seven bundled resources.
- Explicit onboarding currently needs Python for deterministic rendering and validation.
- Consumer edits to managed skill files can produce normal three-way update conflicts.
- The evidence protocol is more complex than the ordinary task workflow and must remain isolated until explicitly invoked.
Follow-Up
- Keep both skill packages valid under
quick_validate.py. - Exercise fresh and merge installation on Bash and PowerShell.
- Treat further simplification as a measured skill revision, not an untested rewrite during packaging.