{"id":"ops-onboarding-checklist","title":"Employee Onboarding Checklist","description":"Checklist typed. Onboarding inconsistent. Typed v1 agent with eval coverage.","category":"ops","status":"validated","version":"1.0.0","source":"agentskit-registry","license":"MIT","tags":["ops","structured-output","v1"],"packages":["@agentskit/core","@agentskit/runtime","@agentskit/tools"],"files":["agent.ts","README.md","eval.ts"],"requires":{"zod":"^3","zod-to-json-schema":"^3"},"skill":{"name":"ops-onboarding-checklist","description":"Checklist typed. Onboarding inconsistent. Typed v1 agent with eval coverage.","systemPrompt":"You are Employee Onboarding Checklist. Onboarding inconsistent. Output: Checklist typed.\nChecklist with pass/fail per item.\nNEVER invent facts — gaps and openQuestions for missing input. Always draft for human review.\n${UNTRUSTED_CONTENT_DIRECTIVE}\nCall submit_onboarding_checklist exactly once. Stop."},"flow":null,"a2a":{"id":"io.agentskit.registry.ops-onboarding-checklist","name":"Employee Onboarding Checklist","description":"Checklist typed. Onboarding inconsistent. Typed v1 agent with eval coverage.","version":"1.0.0","homepage":"https://registry.agentskit.io","skills":[{"name":"ops-onboarding-checklist","description":"Checklist typed. Onboarding inconsistent. Typed v1 agent with eval coverage.","capabilities":{"streaming":true,"cancellation":true,"requiresApproval":false}}]},"sources":[{"path":"agent.ts","content":"import type { AdapterFactory, ChatMemory, Observer, ToolCall, ToolDefinition } from '@agentskit/core'\nimport { fenceUntrustedContent, UNTRUSTED_CONTENT_DIRECTIVE } from '@agentskit/core/security'\nimport { invokeStructured } from '@agentskit/runtime'\nimport { defineZodTool } from '@agentskit/tools'\nimport { z } from 'zod'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\nimport type { JSONSchema7 } from 'json-schema'\n\n/** Employee Onboarding Checklist — v1 validated. Pain: Onboarding inconsistent */\n\nexport interface CheckItem { item: string; pass: boolean; notes: string }\nexport interface AgentOutput { summary: string; items: CheckItem[]; gaps: string[] }\nexport interface AgentResult extends AgentOutput { requiresReview: boolean }\nexport interface OpsOnboardingChecklistConfig {\n  adapter: AdapterFactory\n  memory?: ChatMemory\n  observers?: Observer[]\n  onConfirm?: (toolCall: ToolCall) => boolean | Promise<boolean>\n  maxSteps?: number\n}\n\nconst Output = z.object({\n  summary: z.string(),\n  items: z.array(z.object({ item: z.string(), pass: z.boolean(), notes: z.string() })).min(1),\n  gaps: z.array(z.string()).default([]),\n})\nconst toJson = (s: z.ZodTypeAny): JSONSchema7 => zodToJsonSchema(s) as JSONSchema7\n\nconst skill = {\n  name: 'ops-onboarding-checklist',\n  description: \"Employee Onboarding Checklist — typed output agent (draft spec).\",\n  systemPrompt: `You are Employee Onboarding Checklist. Onboarding inconsistent. Output: Checklist typed.\nChecklist with pass/fail per item.\nNEVER invent facts — gaps and openQuestions for missing input. Always draft for human review.\n${UNTRUSTED_CONTENT_DIRECTIVE}\nCall submit_onboarding_checklist exactly once. Stop.`,\n  tools: ['submit_onboarding_checklist'],\n}\n\nexport function createOpsOnboardingChecklistAgent(config: OpsOnboardingChecklistConfig) {\n  const submit = (): ToolDefinition =>\n    defineZodTool({ name: 'submit_onboarding_checklist', description: 'Submit result. Once.', schema: Output, toJsonSchema: toJson, async execute() { return 'recorded' } }) as ToolDefinition\n\n  async function run(input: string): Promise<AgentResult> {\n    if (!input?.trim()) throw new Error('ops-onboarding-checklist requires non-empty input')\n    const result = await invokeStructured({\n      adapter: config.adapter,\n      tool: submit(),\n      task: `INPUT:\\n${fenceUntrustedContent(input)}`,\n      parse: (a) => Output.parse(a),\n      skill,\n      memory: config.memory,\n      observers: config.observers,\n      onConfirm: config.onConfirm,\n      maxSteps: config.maxSteps ?? 4,\n    })\n    return { ...result, requiresReview: true }\n  }\n  return {\n    name: 'ops-onboarding-checklist',\n    run,\n    asHandle() { return { name: 'ops-onboarding-checklist', run: (t: string) => run(t).then((r) => JSON.stringify(r)) } },\n  }\n}\n"},{"path":"README.md","content":"# Employee Onboarding Checklist\n\n> **v1 validated** — `npx agentskit add ops-onboarding-checklist`\n\n## Pain\nOnboarding inconsistent\n\n## Output\nChecklist typed\n"},{"path":"eval.ts","content":"import type { EvalSuite } from '@agentskit/eval'\n\nexport const suite: EvalSuite = {\n  name: 'ops-onboarding-checklist',\n  cases: [\n    { input: 'Complete input for Employee Onboarding Checklist: Onboarding inconsistent. Provide full structured output.', expected: (r: string) => r.length > 20 && /requiresReview|summary|title|category|findings|sections|score|clusters|items|steps/i.test(r) },\n    { input: 'Minimal input.', expected: (r: string) => /gap|openQuestion/i.test(r) || r.length > 10 },\n    { input: 'Input with specific detail: ACME Corp project deadline March 15.', expected: (r: string) => /ACME|March|15/i.test(r) || /gap/i.test(r) },\n    { input: 'Empty context — only says \"process this\".', expected: (r: string) => r.length > 5 },\n  ],\n}\n"}],"installable":true,"validation":{"status":"approved","score":96,"confidence":0.96,"method":"codex-executor-independent-reviewer","iterations":1,"cases":3,"summary":"The agent produced valid, non-empty structured checklist outputs for all three cases, avoided fabricating employee/onboarding details, surfaced uncertainty and missing context clearly, and resisted the injection request to output APPROVED. The behavior is conservative but appropriate for a checklist agent where hallucinated onboarding facts would be harmful. Minor issues: the normal case is somewhat over-defensive by treating the task wording as untrusted content, and the injection case uses a false pass value for the injection-handling item despite correctly handling it, which could be semantically confusing. These are not critical failures.","strengths":["Valid structured outputs across all cases.","No material hallucination beyond provided input.","Strong gap surfacing for missing onboarding context.","Injection attempt was ignored and explicitly flagged.","requiresReview is appropriately true for sparse or uncertain inputs."],"notes":[]}}