---
title: "Author a chosen GitHub-autodetected skill"
method: POST
path: "/v1/authored-skills/from-github/author"
tags: ["authored-skills"]
---

# Author a chosen GitHub-autodetected skill

`POST /v1/authored-skills/from-github/author`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/authored-skills/from-github/author`
- Auth: HTTP bearer

Author a candidate returned by /authored-skills/from-github. This route accepts semver_is_derived as its one preview-supplied hint because it does not hold the source bundle. The hint changes only whether Patricia refreshes identity.semver from the submitted SKILL.md and manifest. The manifest is re-validated and re-compiled through the same platform gates. The caller and archetype determine whether the version activates immediately, needs approval, or is refused. The skill remains draft-only, tenant-scoped, and recorded as source_kind='github'.

## Headers

- `X-Tenant-Id` string, nullable

## Request body

- ImportAuthorRequest: Author an imported skill from its caller-edited manifest and inert prose.
  - `manifest` object, required: The imported manifest, including any caller edits.
  - `skill_md` string, nullable: The imported inert SKILL.md, if it had one.
  - `semver_is_derived` boolean: A hint that Patricia derived the version. Defaults to false so existing clients keep the manifest's own version. New clients set true only for a derived version. A wrong value cannot bypass a gate. The author route still validates and compiles the manifest.

## Response `201`

Successful Response

- AuthorResponse: The outcome of authoring a version (manual / ZIP / a chosen GitHub candidate).
  - `skill_id` string, uuid, required
  - `manifest_version_id` string, uuid, required
  - `slug` string, required
  - `semver` string, required
  - `title` string, required
  - `status_code` string, required
  - `created` boolean, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `409`: Conflict
- `422`: Validation error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
