CHECKFU_API_KEY is bound to the Workspace. CHECKFU_PRINCIPAL_ID comes from Get access; SESSION is the sess_… you want to capture, SKILL_SOURCE your bound sksrc_… repository, and SERVICE_PRINCIPAL the prin_… the submit acts as.
Find a skill-worthy session (optional)
Ask whether a Session’s trajectory looks worth capturing. This is a read-only structural signal, safe under zero-data-retention because it reads only counts:It reports
skill_worthy with reasons (many_tool_calls, failure_then_success). It never authors anything; it tells your UI when to offer the button.Verify it by replay
Verification replays the task in one isolated child Session that carries the whole proposed skill in its context, graded by an Outcome rubric derived from the original failure:A pass moves the proposal to
verified; a fail to verification_failed (kept, auditable, revisable). Only a verified proposal may submit. The skill rides the graded context rather than a staged mount, which is why its entry is bounded.Submit to the skill repository
Submit writes the skill to your bound SkillSource repo as a
checkfu/<id> branch, through the governed Connection. The branch is the change proposal. expected_version is the verified proposal version you actually reviewed; an exact retry keeps that version, while a stale or changed request conflicts.A human merges; sync delivers
From here nothing is automatic. A person reviews and merges the branch; you sync the SkillSource; the ordinary path versions the skill and future releases carry it. The proposal records the resulting skill version, closing the chain from session to shipped capability.
Why the gate
The prior art points one way. Hermes stages every self-authored skill behind approval. Voyager admits one only after replay verification, which is where this guide’s verify step comes from. ClawHub left its marketplace ungated and grew a measurable malicious-skill supply chain. So averified proposal is a strong, evidence-backed suggestion, and nothing more. A merged skill is a decision a person made. That difference is the product, not a limitation we intend to remove.
Next steps
Capabilities
The SkillProposal lifecycle and the SkillSource loop it adopts through.
Improving instructions from Outcomes
The sibling loop that improves an agent’s instructions instead of its skills.