{
  "file": "F25-skills.md",
  "bullet": "User skills and precedence (`F25.catalog-user-precedence`).",
  "ids": [
    "F25.catalog-user-precedence"
  ],
  "line": 229,
  "script": "control-agent-server api POST /api/skills --json '{\"load_public\": false, \"load_user\": true, \"load_project\": false, \"load_org\": false}' \\\n  --expect 200 --check sources.sdk_base eq 2 \\\n  --check skills contains '\"name\": \"qa-f25-user\", \"type\": \"agentskills\", \"content\": \"QA_USER_BODY' \\\n  --check skills contains \"\\\"source\\\": \\\"$U/qa-f25-user/SKILL.md\\\"\" --save F25.catalog-user-precedence/user\ncontrol-agent-server api POST /api/skills --json '{\"load_public\": false, \"load_user\": true, \"load_org\": false, \"project_dir\": \"'\"$P\"'\"}' \\\n  --expect 200 --check skills contains '\"name\": \"qa-f25-user\"' \\\n  --check skills contains \"\\\"source\\\": \\\"$P/.agents/skills/qa-f25-proj-skill/SKILL.md\\\"\" \\\n  --check skills not-contains QA_USER_COPY --save F25.catalog-user-precedence/project-wins\ncontrol-agent-server api POST /api/skills --json '{\"load_public\": false, \"load_user\": false, \"load_project\": false, \"load_org\": false}' \\\n  --expect 200 --check skills len-eq 0\n",
  "exit_code": 0,
  "elapsed_ms": 2212,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/skills\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"load_public\": false,\n      \"load_user\": true,\n      \"load_project\": false,\n      \"load_org\": false\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"698\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"skills\": [\n        {\n          \"name\": \"qa-f25-proj-skill\",\n          \"type\": \"agentskills\",\n          \"content\": \"QA_USER_COPY\",\n          \"triggers\": [],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f25-proj-skill/SKILL.md\",\n          \"description\": \"QA user copy\",\n          \"is_agentskills_format\": true,\n          \"disable_model_invocation\": false\n        },\n        {\n          \"name\": \"qa-f25-user\",\n          \"type\": \"agentskills\",\n          \"content\": \"QA_USER_BODY\",\n          \"triggers\": [],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f25-user/SKILL.md\",\n          \"description\": \"QA user skill\",\n          \"is_agentskills_format\": true,\n          \"disable_model_invocation\": false\n        }\n      ],\n      \"sources\": {\n        \"sandbox\": 0,\n        \"registered_marketplaces\": 0,\n        \"sdk_base\": 2,\n        \"org\": 0,\n        \"project\": 0\n      }\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 59,\n  \"checks\": [\n    {\n      \"check\": \"sources.sdk_base eq 2\",\n      \"ok\": true,\n      \"actual\": \"2\"\n    },\n    {\n      \"check\": \"skills contains \\\"name\\\": \\\"qa-f25-user\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"QA_USER_BODY\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-proj-skill\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"QA_USER_COPY\\\", \\\"triggers\\\": [], \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f\\u2026\"\n    },\n    {\n      \"check\": \"skills contains \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f25-user/SKILL.md\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-proj-skill\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"QA_USER_COPY\\\", \\\"triggers\\\": [], \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f\\u2026\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/evidence/F25.catalog-user-precedence/user.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/skills\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"load_public\": false,\n      \"load_user\": true,\n      \"load_org\": false,\n      \"project_dir\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/projects/qa-f25-proj\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"1531\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"skills\": [\n        {\n          \"name\": \"qa-f25-proj-skill\",\n          \"type\": \"agentskills\",\n          \"content\": \"# qa-f25-proj-skill\\n\\nWhen this skill is active, include the exact phrase QA_SKILL_MARKER.\",\n          \"triggers\": [\n            \"qa-f25-proj-skill\"\n          ],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/projects/qa-f25-proj/.agents/skills/qa-f25-proj-skill/SKILL.md\",\n          \"description\": \"QA fixture skill qa-f25-proj-skill; mention QA_SKILL_MARKER when asked about qa-f25-proj-skill.\",\n          \"is_agentskills_format\": true,\n          \"disable_model_invocation\": false\n        },\n        {\n          \"name\": \"qa-f25-user\",\n          \"type\": \"agentskills\",\n          \"content\": \"QA_USER_BODY\",\n          \"triggers\": [],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.agents/skills/qa-f25-user/SKILL.md\",\n          \"description\": \"QA user skill\",\n          \"is_agentskills_format\": true,\n          \"disable_model_invocation\": false\n        },\n        {\n          \"name\": \"agents\",\n          \"type\": \"repo\",\n          \"content\": \"# QA project\\n\\nAlways mention QA_AGENTS_MD.\\n\",\n          \"triggers\": [],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/projects/qa-f25-proj/AGENTS.md\",\n          \"description\": null,\n          \"is_agentskills_format\": false,\n          \"disable_model_invocation\": false\n        },\n        {\n          \"name\": \"qa-legacy\",\n          \"type\": \"knowledge\",\n          \"content\": \"Legacy QA microagent.\",\n          \"triggers\": [\n            \"qa-legacy\"\n          ],\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/projects/qa-f25-proj/.openhands/skills/qa-legacy.md\",\n          \"description\": null,\n          \"is_agentskills_format\": false,\n          \"disable_model_invocation\": false\n        }\n      ],\n      \"sources\": {\n        \"sandbox\": 0,\n        \"registered_marketplaces\": 0,\n        \"sdk_base\": 2,\n        \"org\": 0,\n        \"project\": 3\n      }\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 88,\n  \"checks\": [\n    {\n      \"check\": \"skills contains \\\"name\\\": \\\"qa-f25-user\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-proj-skill\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"# qa-f25-proj-skill\\\\n\\\\nWhen this skill is active, include the exact phrase QA_SKILL_MARKER.\\\", \\\"triggers\\\": [\\\"qa-f25-proj-skill\\\"], \\\"sour\\u2026\"\n    },\n    {\n      \"check\": \"skills contains \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/projects/qa-f25-proj/.agents/skills/qa-f25-proj-skill/SKILL.md\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-proj-skill\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"# qa-f25-proj-skill\\\\n\\\\nWhen this skill is active, include the exact phrase QA_SKILL_MARKER.\\\", \\\"triggers\\\": [\\\"qa-f25-proj-skill\\\"], \\\"sour\\u2026\"\n    },\n    {\n      \"check\": \"skills not-contains QA_USER_COPY\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-proj-skill\\\", \\\"type\\\": \\\"agentskills\\\", \\\"content\\\": \\\"# qa-f25-proj-skill\\\\n\\\\nWhen this skill is active, include the exact phrase QA_SKILL_MARKER.\\\", \\\"triggers\\\": [\\\"qa-f25-proj-skill\\\"], \\\"sour\\u2026\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/evidence/F25.catalog-user-precedence/project-wins.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/skills\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"load_public\": false,\n      \"load_user\": false,\n      \"load_project\": false,\n      \"load_org\": false\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"98\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"skills\": [],\n      \"sources\": {\n        \"sandbox\": 0,\n        \"registered_marketplaces\": 0,\n        \"sdk_base\": 0,\n        \"org\": 0,\n        \"project\": 0\n      }\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 75,\n  \"checks\": [\n    {\n      \"check\": \"skills len-eq 0\",\n      \"ok\": true,\n      \"actual\": \"[]\"\n    }\n  ]\n}\n",
  "stderr": ""
}
