Skip to content
Back to skills

Onboard

ASecurity

Harmonia onboard - capture an existing repo's canonical verify commands into .harmonia/project.yaml. Use ONLY when explicitly invoked as /harmonia:onboard.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 6, 2026
ai-agentsgoshell

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 28, 2026

npx -y skills add foliveira/harmonia --skill onboard --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Onboard?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Onboard
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/foliveira-onboard/badge)](https://www.skillsdirectory.com/skills/foliveira-onboard)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: onboard
description: Harmonia onboard - capture an existing repo's canonical verify commands into .harmonia/project.yaml. Use ONLY when explicitly invoked as /harmonia:onboard.
disable-model-invocation: true
---

Your working contract is the rules; their digest is injected at session start - read `${CLAUDE_PLUGIN_ROOT}/core/RULES.md` in full only if that digest is not in your context.

Attach Harmonia to a repository it did not scaffold. You capture the repo's own
verify commands into `.harmonia/project.yaml` so the scoper authors success
criteria against the repo's real commands.

This is not a lifecycle stage: it mints no task workspace and writes no marker or
receipt. It writes exactly one file - `.harmonia/project.yaml` at the repo root -
which the onboarded repo is meant to commit. On a second run it refines that file
in place; see step 3.

The interview, the run-before-record step, and the refine step are yours to carry
out honestly. They are a prose contract, on the same footing as human acceptance
today, not a technical guarantee.

## The file you write

`.harmonia/project.yaml` is flat: one scalar per line, known keys only, no nesting
and no arrays, so each value sits on a single physical line.

```yaml
# .harmonia/project.yaml - this repo's canonical verify commands. Read by the
# scoper. Written by /harmonia:onboard; safe to hand-edit; commit it.
test: <shell command>
lint: <shell command>
typecheck: <shell command>
build: <shell command>
```

Each value is a single bare command on one physical line. The scoper copies it
verbatim into a `- run:` criterion, so leave no `#` on a value line - it would
become part of the command. Typical values: `go test ./...`, `npx vitest run`, or
`bats tests/` for `test`; `golangci-lint run` or `npm run lint` for `lint`;
`tsc --noEmit` or `npm run typecheck` for `typecheck`; `go build ./...` or
`npm run build` for `build`.

## Steps

1. **Interview for the four verify commands - do not guess them.** Elicit this
   repo's canonical commands in four categories from the developer: `test`, `lint`,
   `typecheck` (or `type-check`), and `build`. Ask; do not infer them from a glance
   at the tree.

2. **Prove each verify command works before recording it.** The discipline is:
   prove it works before recording it. Run each candidate once, from the repo root,
   and record it only when it exits 0. Reject it on ANY non-zero exit - gate on
   non-zero, not on an enumerated code set. Judge it by exit status, never by
   pattern-matching its output. A command that does not run is not written as if it
   did.

3. **Refine in place on re-run.** One `.harmonia/project.yaml` per repo. If the
   file already exists, read it and update only the keys that changed, preserving
   the rest; never clobber it from scratch. A second run refines the file in place.
   Preserving a key is not certifying it: a value you did not receive from the
   developer this session stays in the file un-run, and you tell them that is what
   happened. Running it to "check it still works" is executing input you did not
   author, which is the one thing this step must not do. A repository you cloned
   can carry this file, and a scoper copies its values verbatim into `- run:`
   criteria that execute at review.

A `coverage:` key left in the file by an earlier version is no longer read by
anything. Tell the developer it is there and that they can delete it.

Files in this skill

  • CERTIFY.md8.3 KB
  • SKILL.md9.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.